Немного путаницы по поводу отступов - PullRequest
0 голосов
/ 15 сентября 2018

Метод 1:

n = 6
for i in range(2, n):
    if n%i==0:
        print 'Not Prime Number'
        break
else:
    print 'Prime Number'

Выход:

Not Prime Number

Метод 2:

n = 6
for i in range(2, n):
    if n%i==0:
        print 'Not Prime Number'
        break
print 'Prime Number'

Выход:

Not Prime Number
Prime Number

Я хочу знать, что «Метод 1» работает абсолютно нормально, но отступ не находится под оператором if, так как он работает нормально? Кто-нибудь может уточнить это на простом примере? Примечание: этот вопрос задал интервьюер

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

Бывают ситуации, когда вы можете использовать for / else, while / else, if / else.Например: Пример 1:

for i in range(5):
    print(i)
else:
    print('hello world')

вывод: 0 1 2 3 4 hello world

Как это понять?Проще говоря, у вас есть цикл for, который будет проходить от 0 до 4. Но что происходит, когда цикл заканчивается?Хорошо, это когда оператор else входит. Потому что вы написали, чем когда он закончится, вы напечатаете 'hello world'.

Хитрость заключается в том, чтобы увидеть, где находится отступ.В предыдущем примере отступ отступа совпадает с циклом for, поэтому он запускается при завершении цикла.

Пример 2:

for i in range(5)
    if i < 3:
        print(i)
    else:
        print('hello world')

output: 0 1 2Привет, мир! Привет, мир

Посмотрите, как отступ в else совпадает с оператором if, поэтому он будет выполняться, когда оператор if станет ложным, тогда i больше 3.

0 голосов
/ 15 сентября 2018

Python for имеет регистр else:, который выполняется в конце цикла без break (нормальное for выполнение цикла).

При нормальном выполнении цикла for цикл завершается, когда в итераторе больше нет элементов, т. Е. next() при сбое в итераторе. В этом случае else часть for выполняется.

for x in range(5):
    print(x)
else:
    print('Loop over without break!')  # This line is printed.

Предположим, что вы резко остановили цикл с помощью оператора break, вы выходите из цикла, поэтому условие не может быть оценено как ложное, и вы никогда не выполняете предложение else.

for x in range(5):
    print(x)
    break
else:
    print('Loop over with break!')  # This line is not printed.
0 голосов
/ 15 сентября 2018

Метод 1 использует необязательное предложение else цикла for. Это предложение выполняется, когда цикл завершается нормально - то есть, break не вызывается , а .

См. документацию для получения дополнительной информации.

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