Add solutions for 6.13 shield section
This commit is contained in:
parent
8426560ba4
commit
52d9cd53cb
1 changed files with 51 additions and 0 deletions
51
6_tasks/6_13_04_shield.py
Normal file
51
6_tasks/6_13_04_shield.py
Normal 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())
|
Loading…
Reference in a new issue