我正在尝试逐步了解该程序的工作原理
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')
for i in range(2,2):
print(i)
这段代码不打印任何东西,所以我包含的实际值是什么,它是否包含垃圾值。
range(2, 2)
是一个空序列。范围是半开放的,所以range(2, 2)
表示"所有整数>=2
但<2
",其中没有:
>>> len(range(2, 2))
0
>>> list(range(2, 2))
[]
因此,当您迭代它时,您会得到一个空的迭代器:
>>> it = iter(range(2, 2))
>>> next(it)
StopIteration:
因此,for i in range(2, 2):
循环 0 次,甚至从未将任何东西分配给i
,更不用说print
了。
因此,i
包含在此for
语句之前碰巧包含的任何内容:
>>> i = 'this is a string'
>>> for i in range(2, 2): pass
>>> print(i)
this is a string
。或者,如果它不包含任何内容,则没有i
变量:
>>> del i
>>> for i in range(2, 2): pass
>>> print(i)
NameError: name 'i' is not defined
对于范围 (2,2( 中的 i,结果为空列表 []
代码如下:
对于范围 (2,11( 中的 n: 对于范围 (2,n( 中的 x: 如果 n % x == 0: 打印(n,"prime"( 破 还: print(n,"not a prime"(
结果: 2 不是素数 3 不是素数 4 质数 5 不是素数 6 质数 7 不是素数 8 质数 9 质数 10 质数