Python是否会执行While循环,即使条件未满足?

26 浏览
0 Comments

Python是否会执行While循环,即使条件未满足?

这个问题已经在这里得到了回答:

Python while语句的Else子句

我正在创建一个汽车游戏。

只有\"开始\"、\"停止\"、\"退出\"命令。

任何其他命令都无法识别。

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

命令=\"退出\"应该使while条件False,从而跳过执行外部else语句。为什么它会执行两个else语句,即使while条件未得到满足?

admin 更改状态以发布 2023年5月23日
0
0 Comments

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语句,如果不成立,则执行下一个elif语句,如果还是不成立,则执行else语句,打印“车停止”,然后执行下一个while语句,直到循环结束并跳到“我不懂那个”的语句。

把代码改成这样:

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")

0
0 Comments

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

0