为什么第一次迭代不会转到第一个print语句。毕竟,不是2%2 == 0?
>>> 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
答案 0 :(得分:1)
第一次循环,n = 2
所以x
位于range(2, 2)
,这是一个空列表。迭代空列表不会进入内部循环,但会执行else
子句。
答案 1 :(得分:0)
2不在range(2, 2)
中。 range
的上限是独占的,因此它在到达之前就会停止。