Python l oop объяснение - PullRequest
       2

Python l oop объяснение

0 голосов
/ 08 февраля 2020

Я учусь на официальном учебнике Python и дошел до того, что не могу понять, почему вдруг X стал 3. Пожалуйста, проверьте код ниже:

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print(n, 'equals', x, '*', n//x)
...             break
...     else:
...         # loop fell through without finding a factor
...         print(n, 'is a prime number')
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

Когда oop приходит к n = 9, почему x = 3, а не x = 2 ???? Итак, когда l oop пришел к точке, где x = 3? Мой лог c будет; если n = 9, то 9 is a prime number (хотя это не так), потому что x = 2.

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

9 = 3 * 3, потому что условие else в вашей программе выполняется только один раз, когда секунда для l oop полностью выполняется. Давайте начнем с n = 9, x начнёт с 2, он проверит, будет ли 9% 2 == 0, что ложно, затем будет повторяться секунда для l oop и x станет равным 3, затем он проверяет, 9% 3 == 0, что верно, поэтому печатается 9 = 3 * 3.

0 голосов
/ 08 февраля 2020

Эта конструкция называется for-else l oop. Блок else будет выполнен, если for l oop завершится без вызова break. Если вы посмотрите снова, вы увидите, что else имеет отступ на том же уровне, что и for, а не if.

Так что каждое значение x проверяется перед объявлением n как простого.

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