Смотри, я думаю что ты новичок, поэтому распишу всё подробно в шагах:
- Считай число
N
, чтобы мы могли пройтись по коду столько раз, сколько у нас покупателей
- Считай сам ввод. Так как он у тебя в формате "покупатель - пицца - количество", то тут всё довольно просто - подсказка, используй метод
split()
и передай в него подстроку, по которой нужно разделить главную строку
- Создай вне цикла словарь, назовём его
database
, в нём будут хранится данные о пользователях и их заказах
- С каждой новой итерацией цикла, мы будем считывать ввод и проверять, есть ли уже такой покупатель в нашей базе. В случае если он есть, то мы далее проверяем, заказывал ли он уже такую пиццу. Здесь могут возникнуть сложности с хранением данных. Можно их хранить как строки
"<пицца>: <количество>"
, но для новичка таким способом будет сложно понять общее количество заказанных пицц, если он опять закажет такую же пиццу, поэтому для начала можно просто добавить строку названия пиццы <количество>
раз. Т.е:
Если пользователь введёт
Andrew - pepperoni - 3
То список базы данных мы пополним на:
["pepperoni", "pepperoni", "pepperoni"]
Потом на стадии вывода мы можем просто посчитать итоговое количество строк "pepperoni"
в списке, это и будет являтся нашим кол-вом заказанных пицц.
- Для извлечения данных из словаря можно использовать метод
items()
, который возвращает список пар-кортежей, состоящих из ключа и значения. В нашем случае ключ - имя покупателя и значение - список строк заказанных пицц. Сортировать их можно с помощью sorted()
, передав в параметр key
функцию для сортировки.
Если вывод всё таки нужен типа "<пицца> : <количество>", то ты можешь воспользоваться этой статьей.