[英]While loop stopping even if it's False?
我以为while循环的逻辑是合理的,但是在第一个循环后突然停止了。
choice=int(input("Enter choice:"))
if (choice=="" or (choice!=0 and choice!=1 and choice!=2)):
valid = False
while valid == False:
print("Invalid choice, please enter again")
choice=int(input("Enter choice:"))
return choice
if choice ==1:
valid=True
display_modules_average_scores()
menu()
elif choice ==2:
valid=True
display_modules_top_scorer()
menu()
elif choice==0:
exist=True
print("===============================================")
print("Thank you for using Students' Result System")
print("===============================================")
如果输入5,它会:
print("Invalid choice, please enter again")
choice=int(input("Enter choice:"))
但是,如果我再次输入5,它将停止程序。 我究竟做错了什么?
如果我再次输入5,它将停止程序
因为您有一个return语句,该语句立即终止您正在其中运行的函数。
您似乎正在尝试创建无限循环。 您可以以此测试退出和无效条件。 注意:选择永远不会等于空字符串
while True:
choice=int(input("Enter choice (0 to exit):"))
if choice == 1:
pass # do something
elif choice == 2:
pass # do something else
elif choice == 0:
break
else:
print("Invalid choice, please enter again")
print("Thanks")
要退出循环,可以使用break
,它在循环之后执行代码。 如前所述,使用return
结束功能。 它们是有区别的
如果您正在menu()
函数内部运行此循环,则无需再次实际调用menu函数。 这就是while循环的意义
通过定义功能,我们可以轻松执行此任务,而无需代码重复。 下面的代码调用函数inputchoice(),然后inputchoice()将检查用户输入的值,如果该值无效,则inputchoice将自行调用,然后过程继续进行,直到用户输入正确的输入为止。
def inputchoice():
choice=int(input("Enter choice: "))
if (choice=="" or (choice!=0 and choice!=1 and choice!=2)):
print("Invalid choice!")
choice = inputchoice()
return choice
def menu():
choice = inputchoice()
print(choice)
if choice ==1:
valid=True
print("Do something if Valid = True")
elif choice ==2:
valid=True
print("Do something if Valid = True")
elif choice==0:
valid=True
print("Do something if Valid = True")
menu() #implementing menu function
我更喜欢用您的函数编写字典,以使代码保持干净。
在这里考虑以下代码:
def choice1():
return 'choice1'
def choice2():
return 'choice2'
def defaultchoice():
return 'default'
choicedict = {
'1': choice1,
'2': choice2
}
while True:
choice = input("Enter choice (0 to exit):") # maintain as str to avoid error!
if choice == '0':
break
value = choicedict.get(choice, defaultchoice)()
print(value)
单一功能码
def menu():
choice=int(input("Enter choice:"))
if (choice=="" or (choice!=0 and choice!=1 and choice!=2)):
print("Invalid choice, please enter again")
menu()
elif choice ==1:
print("Oh, its working")
menu()
elif choice ==2:
print("Oh, its working")
menu()
elif choice==0:
print("===============================================")
print("Thank you for using Students' Result System")
print("===============================================")
menu()
嗨,我会使用这样的while循环。 从这项任务看来,我们来自同一机构。 这就是我使用的代码,希望对您有所帮助。
while True:
user_input = input("Enter choice: ")
if (user_input == "0"):
print("=====================================================")
print("Thank You for using Students' Result System")
print("=====================================================")
break
elif(user_input == "1"):
display_modules_average_scores()
elif(user_input == "2"):
display_modules_top_scorer()
else:
print("Invalid choice, please enter again")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.