/
kronas26
/
ProjectCook_Book
Обзор
Документация
Войти
/
kronas26
/
ProjectCook_Book
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.py
78 строк
4 KB
KRONAS
first_commit
19 окт 2025, 12:08
19 окт 2025, 12:08
1f3ebc6
Код
Авторство
О чём код?
class CookBook: def __init__(self, file_path): self.file_path = file_path self.cookbook = self._read_recipes_from_file() def _read_recipes_from_file(self): cook_book = {} with open(self.file_path, 'r', encoding='utf-8') as f: current_recipe = None for line in f: line = line.strip() # удаление пробелов и переносов if not line: # пропуск пустых строк continue try: num_ingredients = int(line) # попытка преобразовать строку в число ingredients = [] # список ингредиентов текущего блюда for _ in range(num_ingredients): next_line = next(f).strip() # читаем следующую строку ingr_data = next_line.split('|') # парсим ингредиенты ingredient = { 'ingredient_name': ingr_data[0].strip(), 'quantity': int(ingr_data[1].strip()), 'measure': ingr_data[2].strip() } ingredients.append(ingredient) cook_book[current_recipe] = ingredients except ValueError: # Если это название рецепта current_recipe = line return cook_book def get_shop_list_by_dishes(self, dishes, person_count): shop_list = {} # Проходим по каждому блюду for dish in dishes: # Проверяем, есть ли блюдо в кулинарной книге if dish in self.cookbook: # Получаем ингредиенты для текущего блюда ingredients = self.cookbook[dish] # Для каждого ингредиента увеличиваем общее количество на person_count for ingredient in ingredients: name = ingredient['ingredient_name'] measure = ingredient['measure'] quantity = ingredient['quantity'] * person_count # Если ингредиент уже есть в списке покупок, добавляем количество if name in shop_list: shop_list[name]['quantity'] += quantity else: # Иначе добавляем новый ингредиент в список shop_list[name] = {'measure': measure, 'quantity': quantity} else: # Сообщаем, если блюдо не найдено print(f"Внимание: блюдо '{dish}' отсутствует в кулинарной книге.") return shop_list if __name__ == '__main__': cookbook = CookBook('recipes.txt') try: shopping_list = cookbook.get_shop_list_by_dishes(['Запеченный картофель', 'Омлет'], 2) print("Список покупок:") print('----------------------') for item, details in shopping_list.items(): print(f"{item}: {details['quantity']} {details['measure']}") print('----------------------') except Exception as e: print(f"Произошла ошибка: {e}")