51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
# Решение не все, так как детали задачи скрыты
|
||
import asyncio
|
||
|
||
# Время доставки до разных городов:
|
||
delivery_times = {
|
||
"Москва": 1,
|
||
"Санкт-Петербург": 3,
|
||
"Новосибирск": 7,
|
||
"Екатеринбург": 5,
|
||
"Нижний Новгород": 4,
|
||
"Челябинск": 6,
|
||
"Омск": 7,
|
||
"Красноярск": 8,
|
||
"Владивосток": 9,
|
||
"Хабаровск": 9,
|
||
}
|
||
|
||
# Заказы:
|
||
# orders = [(подарок, город, пометка), ...]
|
||
|
||
# Время до нового года:
|
||
# days_left =
|
||
|
||
|
||
# Тут пишите ваш код:
|
||
async def deliver(order):
|
||
# Напишите корутину deliver(), которая будет после указанного для данного города времени доставки выводить сообщение:
|
||
# order = (подарок, город, пометка)
|
||
await asyncio.sleep(delivery_times.get(order[1]))
|
||
print(f"Подарок {order[0]} успешно доставлен в г. {order[1]}")
|
||
|
||
|
||
async def main():
|
||
tasks = []
|
||
for order in orders:
|
||
# Get order note
|
||
note = order[2]
|
||
city_name = order[1]
|
||
present = order[0]
|
||
task = asyncio.create_task(deliver(order))
|
||
if note == "важно":
|
||
tasks.append(asyncio.shield(task))
|
||
else:
|
||
tasks.append(task)
|
||
done, pending = await asyncio.wait(tasks, timeout=days_left)
|
||
for p_task in pending:
|
||
p_task.cancel()
|
||
await asyncio.sleep(15)
|
||
|
||
|
||
asyncio.run(main())
|