Python for i in range(2,2): print(i) i 变量包含什么,它不包含值 2?



我正在尝试逐步了解该程序的工作原理

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 质数

最新更新