我正在创建一个汽车游戏。 只有“开始”、“停止”、“退出”命令。 无法识别任何其他命令。
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
命令 = "quit" 应该呈现 while 条件 False
并因此跳过以仅执行外部 else 语句。为什么即使不满足while条件,它仍然执行两个else语句?
答案 0 :(得分:1)
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")
被执行,因此你的输出变成
I don't understand that
Game exited
答案 1 :(得分:1)
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")
看看你的代码,你得到输入“quit”,然后它归结为第一个 if(not true)->next elif(not true)->next else(true)->print("carstopped") ->next while(not true)->完成循环并转到“我不明白”
像这样更改代码:
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")
答案 2 :(得分:0)
Python 程序逐行运行。 while 循环不保证其在整个缩进块中的条件。所以不等同于“只要不满足[条件],就跳出while块”
您的 input()
位于 while 循环内。所以它会先执行到while循环结束,直到到达while循环的顶部,再次检查while循环的条件。
典型的解决方法是使用
while True:
command = input("Command: ")
if command == "quit":
break
...
答案 3 :(得分:0)
您在循环的顶部获得输入,因此它在检查循环条件之前完成一个完整的循环迭代。
while command != "quit":
command = input("Command: ")
...
一种选择是将输入提取移动到循环的末尾,以便循环条件是下一个要检查的事情。您还可以通过在使用 break
获取输入后检查退出来提前退出循环。
答案 4 :(得分:0)
正如 Thomas 解释的,如果您真的想打印外部语句,只需删除 else 部分,当给出“quit”命令时,它将打印外部部分。
答案 5 :(得分:0)
因为命令字符串是在 while 条件之后分配的,所以 while 条件只在 while 循环内的 else 语句之后接收字符串 'quit',打印出来的我不明白。
答案 6 :(得分:0)
您正在循环内输入。因此,它将执行循环,然后检查条件是否满足,即 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")