【问题标题】:Creating a Menu in Python [closed]在 Python 中创建菜单 [关闭]
【发布时间】:2013-11-26 16:38:03
【问题描述】:

我正在用 python 制作一个菜单,需要:

  1. 打印带有编号选项的菜单
  2. 让用户输入带编号的选项
  3. 根据用户选择的选项编号,运行特定于该操作的函数。目前,您的函数可以打印出它正在运行。
  4. 如果用户输入了无效的内容,它会告诉用户他们这样做了,并重新显示菜单
  5. 使用字典存储菜单选项,以选项的编号作为键,为该选项显示的文本作为值。
  6. 整个菜单系统应该在一个循环中运行,并一直允许用户做出选择,直到他们选择退出/退出,此时您的程序可以结束。

我是 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") 

回答

这显然是他想要的:

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!" 

【问题讨论】:

  • ans=input("What would you like to do?")
  • 而且你的打印字符串上有太多引号......你也没有使用字典或作业需要的任何其他东西
  • 我应该有多少报价?就像我说的,我是 Python 新手,基本上已经不再使用在线教程了。
  • else: print("\n Not Valid Choice Try again") 你不需要 elif。
  • 另外,在选项 4 上,您需要一个“break”命令来退出循环。

标签: python menu


【解决方案1】:
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]()

【讨论】:

    【解决方案2】:

    只需要进行一些小的修改:

    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。

    【讨论】:

      【解决方案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 循环作为输入。您可以在循环外定义菜单选项,将 print 语句放在循环内,然后执行while(#valid option is not picked),然后将 if 语句放在 while 之后。或者,如果未选择有效选项,您可以执行while 循环和continue 循环。

        另外,字典的定义方式如下:

        my_dict = {key:definition,...}
        

        【讨论】:

          猜你喜欢
          • 2018-03-04
          • 2017-01-25
          • 2021-07-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-21
          • 1970-01-01
          • 2013-07-01
          相关资源
          最近更新 更多