1
+ import random
2
+ import sys
3
+ from time import sleep
4
+
5
+
6
+ ingridients = sorted (["огурец" , "сельдерей" , "банан" , "апельсин" , "капуста" , "морковка" , "киви" , "помидор" , "груша" , "вишня" , "петрушка" , "имбирь" , "яблоко" , "персик" , "клубника" , "смородина" , "ежевика" , "малина" , "укроп" , "мята" , "шпинат" , "брокколи" , "грейпфрут" , "авокадо" , "болгарский перец" , "манго" , "личи" , "драконий фрукт" ])
7
+
8
+
9
+ def intro ():
10
+ print ("Программа автоматического выбора ингридиентов для смузи\n " )
11
+ show_ingridients ()
12
+
13
+
14
+ def outro (sec ):
15
+ sleep (sec )
16
+ sys .exit ()
17
+
18
+
19
+ def show_ingridients ():
20
+ print ("Доступные ингридиенты:\n " )
21
+ for i , v in enumerate (ingridients ):
22
+ print (f'{ i + 1 :3} . { v } ' )
23
+
24
+
25
+ def is_correct_int (user_input , num = 6 ):
26
+ if user_input .isdigit () and (0 <= int (user_input ) <= num ):
27
+ return True
28
+ return False
29
+
30
+
31
+ def is_correct_str (user_input ):
32
+ if user_input .isalpha ():
33
+ return True
34
+ return False
35
+
36
+
37
+ def menu_print ():
38
+ print (f'''\n Меню управления:
39
+ -- 1. Показать доступные ингридиенты
40
+ -- 2. Добавить ингридиент
41
+ -- 3. Удалить ингридиент
42
+ -- 4. Смешать 2 ингридиента
43
+ -- 5. Смешать 3 ингридиента
44
+ -- 6. Смешать заданное количество ингридиентов
45
+
46
+ -- 0. Выход\n ''' )
47
+
48
+
49
+ def menu_ask ():
50
+ menu_print ()
51
+ menu_len = 6 # Изменить при изнемении количества пунктов меню
52
+ num = - 1
53
+ while num % 10 != num :
54
+ user_input = input ("Выбран пункт: " )
55
+ if is_correct_int (user_input , menu_len ):
56
+ return int (user_input )
57
+ else :
58
+ print ("Неверный ввод. Повторите." )
59
+
60
+
61
+ def menu_act ():
62
+ match (menu_ask ()):
63
+ case 1 :
64
+ show_ingridients ()
65
+ menu_act ()
66
+ case 2 :
67
+ add_ingridient ()
68
+ case 3 :
69
+ remove_ingridient ()
70
+ case 4 :
71
+ output_smoothie (get_smoothie (2 ))
72
+ case 5 :
73
+ output_smoothie (get_smoothie (3 ))
74
+ case 6 :
75
+ output_smoothie (get_smoothie (0 ))
76
+ case 0 :
77
+ print ("Завершение программы..." )
78
+ outro (2 )
79
+ case _:
80
+ print ("Что пошло не так. Через 3 секунды программа завершиться..." )
81
+ outro (3 )
82
+
83
+
84
+ def add_ingridient ():
85
+ user_input = input ("Введите один ингридиент: " ).lower ().strip ().split (" " )
86
+ if is_correct_str (user_input [0 ]):
87
+ if user_input [0 ] not in ingridients :
88
+ ingridients .append (user_input [0 ])
89
+ print (f'Ингридиент "{ user_input [0 ]} " добавлен.\n ' )
90
+ menu_act ()
91
+ else :
92
+ print ("Что-то пошло не так. Ингридиент не добавлен." )
93
+ menu_act ()
94
+
95
+
96
+ def remove_ingridient ():
97
+ num = - 1
98
+ show_ingridients ()
99
+ print ("\n 0. для выхода" )
100
+
101
+ while True :
102
+ user_input = input ("Введите номер ингридиента для удаления: " )
103
+ if is_correct_int (user_input , len (ingridients )):
104
+ num = int (user_input )
105
+ break
106
+ print (num )
107
+ if num == 0 :
108
+ menu_act ()
109
+ elif 0 < num <= len (ingridients ):
110
+ dct = {k :v for k , v in enumerate (ingridients )}
111
+ ingridients .remove (dct [num - 1 ])
112
+ print (f'Ингридиент "{ dct [num - 1 ]} " удален.\n ' )
113
+ menu_act ()
114
+
115
+
116
+ def get_smoothie (num = 3 ):
117
+ if not (2 >= num >= 3 ):
118
+ while num > len (ingridients ) or num < 1 :
119
+ user_input = input (f"Сколько ингридиентов использовать? Доступно { len (ingridients )} ингридиентов: " )
120
+ if is_correct_int (user_input ):
121
+ num = int (user_input )
122
+ break
123
+ else :
124
+ print ("Неверный ввод. Повторите." )
125
+ smoothie = set ()
126
+ while len (smoothie ) < num :
127
+ smoothie .add (random .choice (ingridients ))
128
+ return smoothie
129
+
130
+
131
+ def output_smoothie (lst ):
132
+ print (f"Вот ингридиенты для вашего смузи: { lst } ." )
133
+
134
+
135
+ def run ():
136
+ intro ()
137
+ menu_act ()
138
+
139
+
140
+ if __name__ == "__main__" :
141
+ assert sys .version_info >= (3 , 10 ), f'\n \n Обновите Python до версии 3.10 или новее\n Ваша текущая версия Python: { sys .version_info [0 ]} .{ sys .version_info [1 ]} '
142
+ run ()
143
+ outro (2 )
0 commit comments