Python (новичок), я не понимаю разницы между этими двумя - PullRequest
0 голосов
/ 05 августа 2020

Я не понимаю разницы между двумя из них. Почему вывод не совпадает

 x = 0
for i in range(10):
    x += i
    while True:
        if x < 10:
            print('Hi')
            print('Hello')
            break
    print(x)


>>Hi
>>Hello
>>0
>>Hi
>>Hello
>>1
>>Hi
>>Hello
>>3
>>Hi
>>Hello
>>6

и другой

x = 0
for i in range(10):
    x += i
    while x < 10:
        print('Hi')
        print('Hello')
        break
    print(x)


>>Hi
>>Hello
>>0
>>Hi
>>Hello
>>1
>>Hi
>>Hello
>>3
>>Hi
>>Hello
>>6
>>10
>>15
>>21
>>28
>>36
>>45

Я не понимаю, что касается оператора break. первый, кажется, вырывается на l oop, но второй он вырывается только тогда, когда l oop внутри на l oop.

Я так новичок в изучении этих язык, извините, если этот вопрос будет выглядеть глупо: X

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

В первом скрипте «break» достигается только тогда, когда выполняется условие «x <10», которое нарушает while-l oop. В этом случае печатаются только 4 первых итерации for-l oop, затем while-l oop становится бесконечным l oop. Во втором скрипте перерыв достигается через каждое время до 4-й итерации for-l oop, пока 'x <10', тогда он не попадет в этот цикл снова, поскольку следующие значения x больше, чем 10. Оператор Break прерывается с ближайшего l oop. </p>

0 голосов
/ 05 августа 2020

Оба оператора break нарушают while l oop. Если вы присмотритесь, первая программа не выходит из for l oop, а вместо этого работает бесконечно внутри while l oop (потому что x не меньше 10 в этой точке (0 1 3 6 10), поэтому ветвь if никогда не выполняется, а while True l oop продолжает работать), следовательно, не печатаются последующие значения x, как вы ожидали в for l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...