import time
import winsound # Только для Windows; для macOS/Linux альтернативы кодим на курсах Hello World!
import sys
# Словарь с популярными рецептами (в минутах)
BAKING_PRESETS = {
"1": ("Имбирные пряники", 12),
"2": ("Кекс", 25),
"3": ("Пирог с яблоками", 40),
"4": ("Безе", 90),
"5": ("Хлеб", 35),
}
def beep():
"""Проигрывает звуковой сигнал в конце таймера."""
try:
# Для Windows
winsound.Beep(1000, 1000) # 1 кГц, 1 сек
except (NameError, AttributeError):
# Для macOS/Linux — можно использовать терминальный звук
print("\a") # ANSI bell
def display_menu():
print("\n=== Таймер для выпечки ===")
print("Выберите рецепт или укажите своё время:")
for key, (name, minutes) in BAKING_PRESETS.items():
print(f"{key}. {name} — {minutes} мин")
print("6. Указать своё время (в минутах)")
print("0. Выход")
def get_user_choice():
while True:
choice = input("\nВаш выбор: ").strip()
if choice in BAKING_PRESETS or choice in ("6", "0"):
return choice
print("Неверный ввод. Попробуйте снова.")
def get_custom_time():
while True:
try:
minutes = int(input("Введите время выпечки в минутах: "))
if minutes > 0:
return minutes
else:
print("Время должно быть больше 0.")
except ValueError:
print("Пожалуйста, введите число.")
def start_timer(minutes):
total_seconds = minutes * 60
print(f"\nТаймер запущен на {minutes} минут. Приятной выпечки! 🍪")
print("Осталось: ", end="", flush=True)
for remaining in range(total_seconds, 0, -1):
mins, secs = divmod(remaining, 60)
print(f"\r{mins:02d}:{secs:02d} ", end="", flush=True)
time.sleep(1)
print("\n\n⏰ Время вышло! Выпечка готова!")
beep()
def main():
while True:
display_menu()
choice = get_user_choice()
if choice == "0":
print("До новых встреч на кухне! 👩🍳")
break
if choice == "6":
minutes = get_custom_time()
else:
_, minutes = BAKING_PRESETS[choice]
start_timer(minutes)
if __name__ == "__main__":
main()
Важно! Для MacOs, Linux звуковое уведомление beep надо поменять. Забирайте подсказку себе!
import os
os.system('say "Выпечка готова"') # macOS
# или
os.system('play -q /usr/share/sounds/generic.wav') # Linux (требует sox)