/
david74
/
OpeningFile
Обзор
Документация
Войти
/
david74
/
OpeningFile
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
cookbook.py
102 строки
4 KB
david74
initial commit
26 фев 2026, 14:14
Верифицирован
26 фев 2026, 14:14
7c94a86
Код
Авторство
О чём код?
import json def load_recipes(filename): """ Читает файл рецептов и возвращает словарь cook_book. """ cook_book = {} with open(filename, 'r', encoding='utf-8') as f: lines = f.readlines() i = 0 while i < len(lines): # Считываем название блюда (убираем пробелы и перенос строки) dish_name = lines[i].strip() # Если строка пустая (разделитель между рецептами), пропускаем её if not dish_name: i += 1 continue i += 1 # Считываем количество ингредиентов if i >= len(lines): break ingredient_count = int(lines[i].strip()) i += 1 ingredients_list = [] for _ in range(ingredient_count): if i >= len(lines): break # Разбиваем строку ингредиента по разделителю | parts = lines[i].strip().split(' | ') # Формируем словарь ингредиента # Преобразуем количество в целое число ingredient = { 'ingredient_name': parts[0], 'quantity': int(parts[1]), 'measure': parts[2] } ingredients_list.append(ingredient) i += 1 cook_book[dish_name] = ingredients_list return cook_book def get_shop_list_by_dishes(cook_book, dishes, person_count): """ Формирует список покупок для указанных блюд на определенное количество персон. """ shop_list = {} for dish in dishes: # Проверяем, есть ли такое блюдо в книге if dish in cook_book: for ingredient in cook_book[dish]: name = ingredient['ingredient_name'] quantity = ingredient['quantity'] * person_count measure = ingredient['measure'] # Если ингредиент уже есть в списке, суммируем количество if name in shop_list: shop_list[name]['quantity'] += quantity else: shop_list[name] = { 'measure': measure, 'quantity': quantity } return shop_list def main(): # Имя файла с рецептами file_path = 'recipes.txt' cook_book = load_recipes(file_path) # Вывод результата Задачи №1 (для наглядности используем json для красивого вывода словаря) print("--- Результат Задачи №1 (cook_book) ---") print("cook_book = ", end='') print(json.dumps(cook_book, indent=2, ensure_ascii=False)) print("\n" + "="*40 + "\n") # Выполняем Задачу №2: Получение списка покупок dishes_to_cook = ['Запеченный картофель', 'Омлет'] persons = 2 shop_list = get_shop_list_by_dishes(cook_book, dishes_to_cook, persons) # Вывод результата Задачи №2 print(f"--- Результат Задачи №2 (список покупок для {dishes_to_cook} на {persons} персон) ---") print(json.dumps(shop_list, indent=2, ensure_ascii=False)) if __name__ == '__main__': main()