bswarrior Ответов: 1

Простой вопрос о циклах в Python


Я попробовал два образца петель, но я не понял, почему, когда"loop1" начинается с "3", "loop2" начинается с "2"? я полагал, что и то и другое должно было быть одинаковым.


Вот результат:


3 премьер
4 = 2 * 2.0
5 премьер-министр
2 премьер-министр
3 премьер
4 = 2 * 2.0
5 премьер-министр

Что я уже пробовал:

<pre lang="Python">

def loop1():
    for n in range (2,6):
        for x in range(2,n):
            if n % x==0:
                print(n,"=",x,"*",n/x)
            else:
                print(n,"prime")

            break
loop1()

def loop2():
    for c in range (2,6):
        for k in range(2,c):
            if c % k==0:
                print(c,"=",k,"*",c/k)
                break
        else:
                print(c,"prime")
loop2()

1 Ответов

Рейтинг:
6

Richard MacCutchan

Второй цикл пытается повторить для диапазона (2,2) в первой итерации. Что эффективно в то время как x больше 2 и меньше 2: но это невозможно, поэтому цикл завершается. Таким образом, выход начинается с 3, что является следующей итерацией внешнего цикла, когда n имеет значение 3.

Если вы посмотрите на выход из второго цикла, то увидите, что выход первой строки равен :

2 prime

Но вы знаете, что 2 не является простым числом, так как же это произошло? Просто потому, что ваш else предложение имеет отступ только один раз, поэтому оно принадлежит к предыдущему for утверждение, а не if.