/
RecentFellowKid
/
Opening_and_Reading
Обзор
Документация
Войти
/
RecentFellowKid
/
Opening_and_Reading
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
second_task.py
63 строки
2 KB
RecentFellowKid
Initial commit
11 авг 2025, 03:53
11 авг 2025, 03:53
2abaeab
Код
Авторство
О чём код?
def load_cook_book_from_file(): cook_book = {} with open('recipes.txt', 'r', encoding='utf-8') as file: while True: dish_name = file.readline().strip() if not dish_name: break ingredients_count = int(file.readline().strip()) ingredients = [] for _ in range(ingredients_count): ingredient_data = file.readline().strip().split('|') ingredient_name = ingredient_data[0].strip() quantity = int(ingredient_data[1].strip()) measure = ingredient_data[2].strip() ingredients.append({ 'ingredient_name': ingredient_name, 'quantity': quantity, 'measure': measure }) cook_book[dish_name] = ingredients file.readline() return cook_book def get_shop_list_by_dishes(dishes, person_count): cook_book = load_cook_book_from_file() missing_dishes = set(dishes) - set(cook_book.keys()) if missing_dishes: raise ValueError(f"Блюда {missing_dishes} отсутствуют в книге рецептов!") shop_list = {} for dish in dishes: ingredients = cook_book[dish] for ingredient in ingredients: ingredient_name = ingredient["ingredient_name"] measure = ingredient["measure"] base_quantity = ingredient["quantity"] total_quantity = base_quantity * person_count if ingredient_name in shop_list: shop_list[ingredient_name]["quantity"] += total_quantity else: shop_list[ingredient_name] = {"measure": measure, "quantity": total_quantity} return shop_list if __name__ == "__main__": dishes_to_prepare = ['Запеченный картофель', 'Омлет'] number_of_people = 2 shopping_list = get_shop_list_by_dishes(dishes_to_prepare, number_of_people) print(shopping_list)