Создание меню в 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,...}