我应该创建一个称为菜单的功能,该功能将显示菜单,检查输入是否有效,如果无效,请要求用户再次输入输入。如果输入正确,则返回值。
我知道该参数必须是一个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()
答案 0 :(得分:0)
您提供的代码中有几个错误:
def
声明更高的缩进级别下包含。您已将choice
定义为menu
函数的输入,并且正在使用menu()
方法调用main()
。但是,choice
当时不是已定义的变量,并且在您接受用户的输入之前不会在代码中定义。因此,尝试使用此调用时代码将失败。
通过当前设置此代码的方式,您只需在定义和调用中都删除choice
作为menu()
的输入,菜单就会如期出现。
在创建条件语句时,您似乎也有一个误解。在第一个返回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()