/
niyaz
/
file_write_task1
Обзор
Документация
Войти
/
niyaz
/
file_write_task1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.py
50 строк
2 KB
Nijaz
new maim.py
23 апр 2025, 12:29
23 апр 2025, 12:29
60ed138
Код
Авторство
О чём код?
def show_reciept(reciept_file) -> dict: cook_book = {} with open(reciept_file, 'r', encoding='utf-8') as file: while True: dish_name = file.readline().strip() # пишем название блюда if not dish_name: # если строки закончатся, выходим из цикла break ingredient_count = int(file.readline().strip()) # забираем количество ингредиентов ingredients = [] for _ in range(ingredient_count): # проходимся по следующим строкам, в количестве указанном выше ingredient_line = file.readline().strip() ingredient_name, quantity, measure = ingredient_line.split(' | ') # разделяем строку по шаблону ' | ' и добавляем их в список ингредиентов ingredients.append({ 'ingredient_name': ingredient_name, 'quantity': int(quantity), 'measure': measure }) cook_book[dish_name] = ingredients # добавляем ингредиенты в словарь к блюду file.readline() # Пропускаем пустую строку между рецептами, если она есть return cook_book def get_shop_list_by_dishes(cook_book: dict, dishes: list, person: int) -> dict: # функция принимает словарь, созданный функцией show_reciept shop_list = {} for dish in dishes: if dish in cook_book: for ingredient in cook_book[dish]: ingredient_name = ingredient['ingredient_name'] quantity = ingredient['quantity'] * person measure = ingredient['measure'] if ingredient_name in shop_list: shop_list[ingredient_name]['quantity'] += quantity else: shop_list[ingredient_name] = { 'measure': measure, 'quantity': quantity } return shop_list cook_book = show_reciept('reciept.txt') print(get_shop_list_by_dishes(cook_book, ['Запеченный картофель', 'Омлет'], 2))