Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужно написать программу, которая будет эмулировать работу кофейного аппарата.

Fantom Профи (644), на голосовании 1 месяц назад
На первой строке указано число - это количество видов кофе
На следующих строках перечислены виды кофе
На последней строке нужно считать пользовательский ввод - это число предоставляет соответствующий вид кофе
Если число указано вне обозначенного диапазона, то программа должна вывести сообщение Неверный ввод
Независимо от результата программа должна вывести на экран сообщение Хорошего дня
Я написал такой код:
 num_of_cofeiok=int(input()) 

for i in range(num_of_cofeiok):
cofeiki=input()

kakoi_cofeiok=int(input())

if len(cofeiki) print("Неверный ввод")
elif len(cofeiki)==kakoi_cofeiok:

print("Хорошего дня")
В строчке elif len(cofeiki)==kakoi_cofeiok:
Я хочу сделать так чтобы когда пользователь вводил как на примере:
 5 
Cafe Latte
Caffe Americano
Espresso
Cappuccino
Macchiato
4
А вывод был:
 Cappuccino 
Хорошего дня
Голосование за лучший ответ
Николай лесбовский Мыслитель (9531) 2 месяца назад
А не легче будет хештейбл юзать? и быстрее будет и код читабельней
FantomПрофи (644) 2 месяца назад
хэштэйбл еще не изучал
Николай лесбовский Мыслитель (9531) Fantom, Попробуй сделать с хеш таблицей, и код будет в 2 раза короче
Татьяна Просветленный (36390) 2 месяца назад
 from typing import List, Optional 

class CoffeeMachine:
def __init__(self):
self.coffee_types: List[str] = []

def load_coffee_types(self) -> None:
num_types = int(input().strip())
self.coffee_types = [input().strip() for _ in range(num_types)]

def select_coffee(self) -> Optional[str]:
try:
selection = int(input().strip())
return self.coffee_types[selection - 1]
except (ValueError, IndexError):
return None

def run(self) -> None:
self.load_coffee_types()
selected_coffee = self.select_coffee()

if selected_coffee:
print(selected_coffee)
else:
print("Неверный ввод")

print("Хорошего дня")

if __name__ == "__main__":
CoffeeMachine().run()
и реализация в графическом виде
 import tkinter as tk 
from tkinter import messagebox, simpledialog
from typing import List


class CoffeeMachineGUI:
def __init__(self, master: tk.Tk):
self.master = master
self.master.title("Кофейный аппарат")
self.coffee_types: List[str] = []
self.setup_ui()

def setup_ui(self) -> None:
self.frame = tk.Frame(self.master, padx=20, pady=20)
self.frame.pack()

self.label = tk.Label(
self.frame, text="Выберите тип кофе:", font=("Arial", 14))
self.label.pack(pady=10)

self.coffee_listbox = tk.Listbox(
self.frame, font=("Arial", 12), width=30, height=10)
self.coffee_listbox.pack(pady=10)

self.select_button = tk.Button(
self.frame, text="Выбрать", command=self.select_coffee, font=("Arial", 12))
self.select_button.pack(pady=10)

def load_coffee_types(self) -> None:
num_types = simpledialog.askinteger(
"Ввод", "Введите количество типов кофе:", parent=self.master, minvalue=1)
if num_types is None:
self.master.quit()
return

for i in range(num_types):
coffee_type = simpledialog.askstring("Ввод", f"Введите название кофе {
i+1}:", parent=self.master)
if coffee_type:
self.coffee_types.append(coffee_type)
self.coffee_listbox.insert(tk.END, coffee_type)

if not self.coffee_types:
messagebox.showerror("Ошибка", "Не введено ни одного типа кофе.")
self.master.quit()

def select_coffee(self) -> None:
selection = self.coffee_listbox.curselection()
if selection:
selected_coffee = self.coffee_types[selection[0]]
messagebox.showinfo("Выбор кофе", f"Вы выбрали: {selected_coffee}")
else:
messagebox.showerror("Ошибка", "Неверный ввод")
messagebox.showinfo("Завершение", "Хорошего дня!")
self.master.quit()


def main():
root = tk.Tk()
app = CoffeeMachineGUI(root)
app.load_coffee_types()
root.mainloop()


if __name__ == "__main__":
main()
Похожие вопросы