Корзина покупок
Добро пожаловать на последний урок курса Python! В нём вы соберёте воедино всё, что узнали, и шаг за шагом напишете одну полезную программу: чек для заказа в интернет-магазине продуктов. Когда вы закончите, программа будет выводить вот это:
Не удалось добавить Яйца: количество должно быть не меньше 1.
ЧЕК
Хлеб: 2 x $3 = $6
Молоко: 6 x $2 = $12
Сыр: 1 x $7 = $7
Шоколад: 3 x $5 = $15
Кофе: 2 x $7 = $14
Итого: $54
Доставка: бесплатно
К оплате: $54Программа считает стоимость каждой строки и всего заказа, решает, бесплатна ли доставка, и проверяет товары, которые покупатель кладёт в корзину. Вы будете использовать переменные, f-строки, условия, списки, циклы, функции и словари: всё, что было в курсе. Каждое упражнение продолжает предыдущее (в редакторе уже лежит его готовый код) и добавляет одну часть.
Данные. Корзина лежит в переменной cart в начале программы. Это список словарей, по одному на каждый товар. В каждом словаре три ключа: "name" (название), "price" (цена одной штуки в целых долларах) и "quantity" (сколько штук хочет покупатель). Обратите внимание на запятую после последнего словаря: Python это разрешает, и так проще добавить ещё один товар. В настоящем магазине данные пришли бы с сайта. Здешние программы берут данные из переменных.
План. Программа разделена на функции, у каждой своя задача. Пока она одна: print_receipt(items), которая печатает чек для списка товаров, полученного как аргумент. Пока она печатает только заголовок. В самом низу программа вызывает её с нашей корзиной. Это обычная форма программы: данные сверху, потом функции, а в конце код, который их использует.
Внутри функции работайте с параметром items, а не с cart. Тогда функция напечатает чек для любого списка, который получит, а не только для этой корзины.
Напоминание, как перебрать список словарей:
books = [
{"title": "Хоббит", "pages": 310},
{"title": "Матильда", "pages": 240},
]
for book in books:
print(f"{book['title']}: {book['pages']} стр.")Хоббит: 310 стр.
Матильда: 240 стр.Обратите внимание на кавычки: f-строка в двойных кавычках, поэтому ключи внутри неё в одинарных. Двойные кавычки внутри двойных работают только в новых версиях Python.
Задание
- 1
В
print_receipt()под строкой, которая печатает заголовок, напишите циклfor, который перебираетitemsи печатает название каждого товара. - 2
Дополните строку в цикле так, чтобы она показывала ещё и количество, и цену одной штуки. Используйте f-строку. Первая строка чека будет такой:
Хлеб: 2 x $3. Знак$— обычный текст в f-строке: напишите его прямо перед фигурными скобками с ценой, без пробела.