/
Karaul-2006
/
OpenReadWriteFile
Обзор
Документация
Войти
/
Karaul-2006
/
OpenReadWriteFile
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Task_02.py
48 строк
2 KB
Semenov Vladimir
Task2.py added
19 июл 2026, 08:39
19 июл 2026, 08:39
1910591
Код
Авторство
О чём код?
class CookBook(): def __init__(self, file_name, name) -> None: self.cook_book_dict = {} self.name = name with open('recipes.txt', encoding = 'utf-8') as f: line_curr = '' while True: line_next = f.readline().strip() if not (line_curr or line_next) : break line_curr = line_next if not line_curr: continue if line_curr.isnumeric(): continue if '|' in line_curr: ingr_list = line_curr.split(' | ') ingr_dict = {'ingredient_name': ingr_list[0], 'quantity': int(ingr_list[1]), 'measure': ingr_list[2]} self.cook_book_dict[food_curr].append(ingr_dict) else: food_curr = line_curr self.cook_book_dict[food_curr] = [] def __str__(self) -> str: rez_str = self.name + ' = {' n_food = 0 for food in self.cook_book_dict: if n_food > 0: rez_str = f"{rez_str}," rez_str = f"{rez_str}\n '{food}': [" n_food += 1 for ingr in self.cook_book_dict[food]: rez_str = f"{rez_str}\n {ingr}" rez_str = rez_str + "\n ]" rez_str = rez_str + "\n}" return rez_str def get_shop_list_by_dishes(self, dishes, person_count): ingr_dict = {} for dish in dishes: for ingredient in self.cook_book_dict[dish]: if ingredient['ingredient_name'] in ingr_dict: ingr_dict[ingredient['ingredient_name']]['quantity'] += ingredient['quantity'] * person_count else: ingr_dict[ingredient['ingredient_name']] = {'measure': ingredient['measure'], 'quantity': ingredient['quantity'] * person_count} return ingr_dict cook_book = CookBook('recipes.txt', 'cook_book') print (cook_book) food_list = ['Запеченный картофель', 'Омлет'] print('\n' + str(cook_book.get_shop_list_by_dishes(food_list, 2)))