为什么在while循环中添加另一个if语句会使我过早地退出循环?

时间:2019-04-06 13:21:34

标签: python-3.x if-statement while-loop

我正在跟踪有关while循环的教程,该教程以数字猜谜游戏为例。尝试将循环设置为在三次不正确的尝试后中断,并显示“您输了”。我想添加另一个if语句,以便在每次不正确的猜测后打印(重试),但是当我这样做时,循环在第一次猜测后中断,而不是运行所有三个尝试。在添加第二条if语句之前,程序正确运行了整个循环。

Tweak.xm:92:14: error: cannot initialize a variable of type 'UIImageView *' with an
      rvalue of type 'NSArray *'
UIImageView *logo =[[NSArray alloc] initWithObjects:image1,image2,image3, nil];

据我了解,中断将忽略if语句,仅遵循while命令设置的参数。我不明白为什么在第一次尝试后添加额外的if语句会杀死循环。

2 个答案:

答案 0 :(得分:0)

您放错了break。当有正确的猜测时,您应该从循环中中断,然后在错误的猜测中重试循环。

secret_number = 6
guess_count = 0
guess_limit = 3
while guess_count < guess_limit:
    guess = int(input('Guess the secret number! '))
    guess_count += 1
    if guess == secret_number:
        print('...You Won!')
        break
    if guess != secret_number and guess_count != guess_limit:
        print('Nope. Try again!')
else:
    print('...Sorry, you failed.')

答案 1 :(得分:0)

  

与C中一样,break语句脱离了最里面的for或while循环。   https://docs.python.org/3/tutorial/controlflow.html

使用:

while guess_count < guess_limit:
    ....
    if guess != secret_number:
            print('Nope. Try again!')
            break

您实际上是在说:猜错时退出while循环。