我正在试着一步一步地了解这个程序是如何工作的。
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)
这段代码没有打印任何东西,所以我包含的实际值是什么,它是否包含无用价值。
发布于 2018-08-21 08:40:07
range(2, 2)
是一个空序列。范围是半开放的,因此range(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
了。
因此,在这条for
语句之前,i
包含了它碰巧包含的所有内容:
>>> 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
发布于 2018-08-21 08:46:33
对于范围(2,2)中的i,结果为空list []
代码如下:
对于范围(2,11)中的n:对于范围(2,n)中的x:如果n%x == 0:打印(n,“质数”)中断否则:打印(n,“不是质数”)
结果是:2不是素数3不是素数4素数5不是素数6素数7不是素数8素数9素数10
https://stackoverflow.com/questions/51940104
复制相似问题