Почему добавление еще одного оператора if в цикл while преждевременно вырвало меня из цикла? - PullRequest
0 голосов
/ 06 апреля 2019

Я следую руководству по циклам while, в котором в качестве примера используется игра на угадывание чисел.Цикл прерывается после трех неверных попыток и выводит «Вы проиграли».Я хотел добавить еще один оператор if для печати после каждого неверного предположения (попробуйте еще раз), но когда я сделал это, цикл прерывается после первого предположения вместо того, чтобы проходить через все три попытки.Прежде чем добавить второй оператор if, программа правильно прошла весь цикл.

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!')
    if guess != secret_number:
        print('Nope. Try again!')
        break
else:
    print('...Sorry, you failed.'

Насколько я понимаю, разрыв игнорирует операторы if и следует только параметрам, установленным командой while.Я не понимаю, почему добавление дополнительного оператора if убивает цикл после первой попытки.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Оператор break, как и в C, выходит за пределы самого внутреннего цикла 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, когда догадка неверна.

0 голосов
/ 06 апреля 2019

Вы не на месте 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.')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...