Python循环说明

问题描述 投票:-1回答:2

我正在学习官方的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

[循环返回到n = 9时,为什么选择x = 3而不是x = 2 ????那么,何时循环到达x = 3的位置?我的逻辑是如果为n = 9,则为9 is a prime number(尽管不是),因为x = 2

非常感谢!

python loops
2个回答
0
投票

这是一个称为for-else循环的结构。如果for循环运行完成而不调用break,则将执行else块。如果再次查看,您会发现else缩进到与for相同的级别,而不是if。

因此x的每个值在声明n为素数之前都要进行检查。


0
投票

9 = 3 * 3因为您的程序中的else条件仅在第二个for循环完全执行后才运行。让我们从n = 9开始,x从2开始它将检查9%2 == 0是否为False,然后第二个for循环将迭代,并且x等于3,然后检查是否9%3 == 0,这是True,因此它显示9 = 3 * 3。

© www.soinside.com 2019 - 2024. All rights reserved.