[英]Python execute While loop even if condition is not met?
我正在创建一个汽车游戏。 只有“开始”、“停止”、“退出”命令。 无法识别任何其他命令。
command = ""
while command != "quit":
command = input("Command: ")
if command == "start":
print("Car ready to go")
elif command == "stop":
print("Car stopped")
else:
print("I don't understand that")
else:
print("Game exited")
除“退出”外,所有命令都可以正常工作。 使用 while 循环,它会导致执行 else 语句并打印:
I don't understand that
Game exited
command = "quit" 应该使 while 条件为False
,从而向前跳过以仅执行外部 else 语句。 为什么即使不满足 while 条件,它也会执行两个 else 语句?
while-else
的工作方式如下:如果不满足while
条件,则执行else
。
所以,当你在程序中输入“quit”,那么if command == "start":
和elif command == "stop":
条件都不满足。
因此,执行了else
,打印I don't understand that
。
现在,再次检查while
循环的条件: command != "quit"
但是,这个条件是False
,因为command
的值现在是"quit"
。
所以,
else:
print("Game exited")
被执行,因此您的 output 变为
I don't understand that
Game exited
while command != "quit":
command = input("Command: ")
if command == "start":
print("Car ready to go")
elif command == "stop":
print("Car stopped")
else:
print("I don't understand that")
else:
print("Game exited")
查看您的代码,您得到输入“退出”,然后它归结为第一个 if(not true)->next elif(not true)->next else(true)->print("car stopped")->next while(not true)->finish loop 和 go 到“我不明白”
像这样更改代码:
while command != "quit":
command = input("Command: ")
if command == "start":
print("Car ready to go")
elif command == "stop":
print("Car stopped")
elif command != "quit":
print("I don't understand that")
else:
print("Game exited")
Python 程序逐行运行。 while 循环不保证其在整个缩进块中的条件。 所以不等于“只要不满足[条件],就跳出while块”
您的input()
在 while 循环内。 所以它会先执行到while循环结束,直到到达while循环的顶部,再次检查while循环的条件。
一个典型的解决方法是有一个
while True:
command = input("Command: ")
if command == "quit":
break
...
您在循环顶部获得输入,因此它在检查循环条件之前完成了完整的循环迭代。
while command != "quit":
command = input("Command: ")
...
一种选择是将输入提取移动到循环的末尾,以便循环条件是下一个要检查的事情。 您还可以通过在使用break
获取输入后检查 quit 来提前跳出循环。
正如 Thomas 所解释的,如果您真的想打印外部语句,只需删除 else 部分,它会在给出命令“quit”时打印外部部分。
因为命令字符串是在 while 条件之后分配的,所以 while 条件仅在 while 循环内的 else 语句之后接收字符串 'quit',这打印出我不明白。
您正在循环内输入。 因此,它将执行循环,然后检查条件是否满足即command != quit
。
您可以尝试使用此代码。
command = ""
while command != "quit":
command = input("Command: ")
if command == "start":
print("Car ready to go")
elif command == "stop":
print("Car stopped")
elif command != "quit":
print("I don't understand that")
else:
print("Game exited")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.