/
distorm
/
netology_Homework
Обзор
Документация
Войти
/
distorm
/
netology_Homework
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
task_2.py
98 строк
3 KB
oreshnikov
task_2_completed
19 фев 2026, 19:04
19 фев 2026, 19:04
019cbf9
Код
Авторство
О чём код?
""" Домашнее задание к лекции «Открытие и чтение файла, запись в файл» - Напишите программу для кулинарной книги. - Список рецептов хранится в отдельном файле в следующем формате: Название блюда Количество ингредиентов в блюде Название ингредиента | Количество | Единица измерения - В одном файле может быть произвольное количество блюд. - Читать список рецептов из этого файла. - Соблюдайте кодстайл, разбивайте новую логику на функции и не используйте глобальных переменных. """ import pprint def read_file_lines(filename): file = open(filename, 'r', encoding='utf-8') lines = file.readlines() file.close() clean_lines = [] for line in lines: line = line.strip() if line != "": clean_lines.append(line) return clean_lines def parse_ingredient_line(line): parts = line.split('|') ingredient = {} ingredient['ingredient_name'] = parts[0].strip() ingredient['quantity'] = int(parts[1].strip()) ingredient['measure'] = parts[2].strip() return ingredient def load_recipes(filename): lines = read_file_lines(filename) cook_book = {} index = 0 while index < len(lines): dish_name = lines[index] index = index + 1 ingredients_count = int(lines[index]) index = index + 1 ingredients = [] count = 0 while count < ingredients_count: ingredient_line = lines[index] index = index + 1 ingredient = parse_ingredient_line(ingredient_line) ingredients.append(ingredient) count = count + 1 cook_book[dish_name] = ingredients 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(): cook_book = load_recipes('recipes.txt') import pprint printer = pprint.PrettyPrinter(width=250, compact=False) #print("Cook book:") #printer.pprint(cook_book) print("\nСписок ингредиентов для выбранных блюд:\n") shopping_list = get_shop_list_by_dishes( cook_book, ['Запеченный картофель', 'Омлет'], 4) printer.pprint(shopping_list) if __name__ == "__main__": main()