使用输入来确定要在Python中调用的函数

时间:2018-10-16 15:22:53

标签: python

我应该创建一个称为菜单的功能,该功能将显示菜单,检查输入是否有效,如果无效,请要求用户再次输入输入。如果输入正确,则返回值。

我知道该参数必须是一个int,但是如何使它接受用户的输入,然后相应地显示该函数呢?这就是我到目前为止所拥有的。

def menu(choice):
    print("===============================================")
    print("Welcome to Students' Result System")
    print("===============================================")
    print("1: Display modules average scores")
    print("2: Display modules top scorer")
    print("0: Exit")
    choice=int(input("Enter choice:"))
    while (choice=="" or choice!=0 or choice!=1 or choice!=2):
        print("Invalid choice, please enter again")
        choice=int(input("Enter choice:"))
        return choice
    if choice ==1:
        display_modules_average_scores()
    elif choice ==2:
        display_modules_top_scorer()
    elif choice==0:
        print("Goodbye")

def display_modules_average_scores():
    print("average")

def display_modules_top_scorer():
    print ("top")

def main():
    menu(choice)

main()

1 个答案:

答案 0 :(得分:0)

您提供的代码中有几个错误:

  1. Python是对空格敏感的语言。您需要缩进代码,以便与该函数相关的代码在比其关联的def声明更高的缩进级别下包含。
  2. 您已将choice定义为menu函数的输入,并且正在使用menu()方法调用main()。但是,choice当时不是已定义的变量,并且在您接受用户的输入之前不会在代码中定义。因此,尝试使用此调用时代码将失败。

    通过当前设置此代码的方式,您只需在定义和调用中都删除choice作为menu()的输入,菜单就会如期出现。

  3. 在创建条件语句时,您似乎也有一个误解。在第一个返回or的条件之后,由true连接的条件将不进行评估。因此,菜单选项1将成为条件choice!=0 TRUE,并且将始终进入Invalid choice状态。

    如果您想验证用户的输入,则可能需要考虑使用and关键字将数字比较(在空白字符串检查之后)链接起来:

    while (choice=="" or (choice!=0 and choice!=1 and choice!=2)):
    

解决所有这些问题后,您的代码将更像以下内容:

def menu():
  print("===============================================")
  print("Welcome to Students' Result System")
  print("===============================================")
  print("1: Display modules average scores")
  print("2: Display modules top scorer")
  print("0: Exit")
  choice=int(input("Enter choice:"))
  while (choice=="" or (choice!=0 and choice!=1 and choice!=2)):
      print("Invalid choice, please enter again")
      choice=int(input("Enter choice:"))
      return choice
  if choice ==1:
      display_modules_average_scores()
  elif choice ==2:
      display_modules_top_scorer()
  elif choice==0:
      print("Goodbye")

def display_modules_average_scores():
    print("average")

def display_modules_top_scorer():
    print ("top")

def main():
    menu()

main()

Repl.it