Создание меню в Python
Я работаю над созданием меню на python, которому необходимо:
- Распечатайте меню с пронумерованными параметрами
- Позвольте пользователю ввести нумерованную опцию
- В зависимости от номера параметра, который пользователь выбирает, запустите функцию, специфичную для этого действия. На данный момент ваша функция может просто распечатать, что она запущена.
- Если пользователь вводит что-то недействительное, он сообщает пользователю, что они это сделали, и повторно отображает меню
- используйте словарь для хранения параметров меню, с номером опции в качестве ключа и текстом для отображения для этой опции в качестве значения.
- Вся система меню должна работать внутри цикла и позволять пользователю делать выбор до тех пор, пока они не выберут exit/quit, после чего ваша программа может закончиться.
Я новичок в Python, и я не могу понять, что я сделал с кодом.
Пока это мой код:
ans=True
while ans:
print (""""
1.Add a Student
2.Delete a Student
3.Look Up Student Record
4.Exit/Quit
"""")
ans=input("What would you like to do?"
if ans=="1":
print("\nStudent Added")
elif ans=="2":
print("\n Student Deleted")
elif ans=="3":
print("\n Student Record Found")
elif ans=="4":
print("\n Goodbye")
elif ans !="":
print("\n Not Valid Choice Try again")
ANSWERED
Это то, что он хотел, очевидно:
menu = {}
menu['1']="Add Student."
menu['2']="Delete Student."
menu['3']="Find Student"
menu['4']="Exit"
while True:
options=menu.keys()
options.sort()
for entry in options:
print entry, menu[entry]
selection=raw_input("Please Select:")
if selection =='1':
print "add"
elif selection == '2':
print "delete"
elif selection == '3':
print "find"
elif selection == '4':
break
else:
print "Unknown Option Selected!"
Ответы
Ответ 1
Требуется только несколько незначительных поправок:
ans=True
while ans:
print ("""
1.Add a Student
2.Delete a Student
3.Look Up Student Record
4.Exit/Quit
""")
ans=raw_input("What would you like to do? ")
if ans=="1":
print("\n Student Added")
elif ans=="2":
print("\n Student Deleted")
elif ans=="3":
print("\n Student Record Found")
elif ans=="4":
print("\n Goodbye")
elif ans !="":
print("\n Not Valid Choice Try again")
Я изменил четыре кавычки на три (это число, необходимое для многострочных кавычек), добавила закрывающую скобку после "What would you like to do? "
и изменила вход на raw_input.
Ответ 2
def my_add_fn():
print "SUM:%s"%sum(map(int,raw_input("Enter 2 numbers seperated by a space").split()))
def my_quit_fn():
raise SystemExit
def invalid():
print "INVALID CHOICE!"
menu = {"1":("Sum",my_add_fn),
"2":("Quit",my_quit_fn)
}
for key in sorted(menu.keys()):
print key+":" + menu[key][0]
ans = raw_input("Make A Choice")
menu.get(ans,[None,invalid])[1]()
Ответ 3
Это должно сделать это. Вам не хватает )
, и вам нужно только """
, а не 4 из них. Также вам не нужен elif в конце.
ans=True
while ans:
print("""
1.Add a Student
2.Delete a Student
3.Look Up Student Record
4.Exit/Quit
""")
ans=raw_input("What would you like to do? ")
if ans=="1":
print("\nStudent Added")
elif ans=="2":
print("\n Student Deleted")
elif ans=="3":
print("\n Student Record Found")
elif ans=="4":
print("\n Goodbye")
ans = None
else:
print("\n Not Valid Choice Try again")
Ответ 4
Похоже, вы только что закончили шаг 3. Вместо запуска функции вы просто распечатываете инструкцию. Функция определяется следующим образом:
def addstudent():
print("Student Added.")
затем вызывается путем записи addstudent()
.
Я бы рекомендовал использовать цикл while
для ввода. Вы можете определить параметр меню за пределами цикла, поместить оператор печати внутри цикла и сделать while(#valid option is not picked)
, а затем поместить инструкции if после этого. Или вы можете сделать цикл while
и continue
цикл, если не выбран допустимый параметр.
Кроме того, словарь определяется следующим образом:
my_dict = {key:definition,...}