Add solutions for 6.13 shield section

This commit is contained in:
pro100ton 2024-11-21 22:22:48 +03:00
parent 8426560ba4
commit 52d9cd53cb

51
6_tasks/6_13_04_shield.py Normal file
View file

@ -0,0 +1,51 @@
# Решение не все, так как детали задачи скрыты
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())