Python

Помогите написать программу на Python, моя версия кода на скрине, вроде всё работает, но автопроверка не проходит.

«Друг вокруг» начал сотрудничать с магазином здорового питания «Долголетие». Теперь он предлагает рецепты блюд по главному ингредиенту и времени приготовления.

1. Вводится главный ингредиент («стоп» — завершить работу).
2. Вводится желаемое время приготовления («1 — 30 минут, 2 — 1 час»).
3. Печатается рекомендованное блюдо.
4. Подбор начинается заново.

Предлагаемые блюда:
«творог», 30 мин: «Запеканка»,
«творог», 1 час: «Сырники»,

«курица», 30 мин: «Куриное филе в сметане»,
«курица», 1 час: «Спагетти с курицей в сливочно-грибном соусе»,

любой другой ингредиент, 30 мин: «Салат с брокколи»,
любой другой ингредиент, 1 час: Суп-пюре из шампиньонов.
Это самый худший способ, которым можно было сделать в Питоне.

Вот как это делается по уму (один из способов).
 dishes = {
('творог', '1'): 'Запеканка',
('творог', '2'): 'Сырники',
('курица', '1'): 'Куриное филе в сметане',
('курица', '2'): 'Спагетти с курицей в сливочно-грибном соусе'
}

default = {
'1': 'Салат с брокколи',
'2': 'Суп-пюре из шампиньонов'
}

ing = input('Главный ингредиент (стоп - завершить): ')
while ing != 'стоп':
time = input('1 - 30 мин, 2 - 1 час: ')
dish = dishes.get((ing, time))
if dish is None:
dish = default.get(time);
print(dish if dish is not None else 'Нет такого блюда')
ing = input('Главный ингредиент (стоп - завершить): ')

Во-первых, всю продукцию держим в словарях (для блюд с названием ингредиента и без). Ключ составной в первом словаре и простой во втором.

Во-вторых, обрабатываем ситуацию, когда блюдо не найдено (пользователь же может ввести в качестве времени "0", "5" или "хрен в пальто").

В-третьих, запоминаем, что суть разработки ПО заключается в автоматизации повторяющихся действий, и если код полон повторений, то это - плохой код, он противоречит самому смыслу написания кода.
Александр Лободинский
Александр Лободинский
54 053
Лучший ответ
 while True:
name = input()
if name == 'стоп': break
print({
'творог': {'1': 'Запеканка', '2': 'Сырники'},
'курица': {'1': 'Куриное филе в сметане', '2': 'Спагетти с курицей в сливочно-грибном соусе'}
}.get(name, {'1': 'Салат с брокколи', '2': 'Суп-пюре из шампиньонов'})[input()])
 dishes = { 
"cottage cheese": {
30: "Casserole",
60: "Cheesecakes"
},
"chicken": {
30: "Chicken fillet in sour cream",
60: "Spaghetti with chicken in creamy mushroom sauce"
}
}

while True:
main_ingredient = input("Enter the main ingredient ('stop' to exit): ")
if main_ingredient == "stop":
break

cooking_time = int(input("Enter the desired cooking time (1 for 30 minutes, 2 for 1 hour): "))
if cooking_time == 1:
cooking_time = 30
elif cooking_time == 2:
cooking_time = 60
else:
print("Invalid input. Please enter 1 for 30 minutes or 2 for 1 hour.")
continue

if main_ingredient in dishes:
if cooking_time in dishes[main_ingredient]:
print("Recommended dish:", dishes[main_ingredient][cooking_time])
else:
print("No dish found for the given cooking time.")
else:
print("No dish found for the given ingredient.")
if cooking_time == 30:
print("Recommended dish: Broccoli salad")
else:
print("Recommended dish: Mushroom puree soup")
Рекомендую использовать код Андрея.