为什么这个while循环只是继续而不是停止?

时间:2013-12-29 01:43:49

标签: python while-loop

当我在第一个问题中按下“y”时,循环就会继续而不是停止。

Done = True
while Done:
quit = str(raw_input ("Do you want to quit? "))
if quit == 'y' :
Done=False;
attack = str(raw_input("Does your elf attack the dragon? "))
if attack=='y':
print ("Bad choice, you died.")
done=False;
print "Loop stopped"

我正在使用Python 2.7。

2 个答案:

答案 0 :(得分:2)

您可能想要使用break,这用于停止循环:

while True:
    quit = str(raw_input ("Do you want to quit? "))
    if quit == 'y' :
        break  # Add this
    ...

引用Python docs

  

break语句与C语句一样,突破了最小的封闭for或while循环。

修改

您可以尝试使用无限循环(while True),当您想要退出时,只需检查条件并使用break语句。

答案 1 :(得分:1)

Python区分大小写。您需要确保Done始终大写:

>>> Done = True
>>> while Done:
    quit = str(raw_input ("Do you want to quit? "))
    if quit == 'y' :
        Done = False
    attack = str(raw_input("Does your elf attack the dragon? "))
    if attack=='y':
        print("Bad choice, you died.")
        Done = False
        print("Loop stopped")

正如Makoto指出的那样,在Python 2.x中,上面打印语句中的括号是一种分组机制。但是在Python 3.x中,print构成一个函数并需要括号。上面的代码适用于两个版本的Python。