Python for i的范围(2,2):打印(i)i变量包含什么,它不';不包含值2?
我试图一步一步地理解这个程序是如何工作的Python for i的范围(2,2):打印(i)i变量包含什么,它不';不包含值2?,python,python-3.x,Python,Python 3.x,我试图一步一步地理解这个程序是如何工作的 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 nu
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)
此代码不打印任何内容,因此我包含的实际值是什么,它是否包含垃圾值。范围(2,2)
是一个空序列。范围是半开的,因此范围(2,2)
表示“范围(2,2)中的i的所有整数>=2
,但结果为空列表[]
代码如下:
对于范围(2,11)内的n:
对于范围(2,n)内的x:
如果n%x==0:
打印(n,“素数”)
打破
其他:
打印(n,“非素数”)
结果是:
2不是素数
3不是质数
4素数
5不是质数
6素数
7不是质数
8素数
9素数
10素数1)缩进已关闭。请修复它;2)尝试打印(列表(范围(2,2))
。这可能会说明您的问题。此外,您应该在for
循环的正下方添加print
语句。这也会帮助您解决这个问题。这段代码似乎来自教程的一节,旨在说明“break”和“else”如何在for循环中运行。对于新手来说,空列表确实是一个问题在这种情况下几乎不会分散注意力,可以更明确地表达。没有任何代码在任何地方构建列表,那么它是如何导致空列表的呢?另外,将OP的代码更改为打印素数的而不是素数
,以及复合数的素数
,有什么意义?
>>> len(range(2, 2))
0
>>> list(range(2, 2))
[]
>>> it = iter(range(2, 2))
>>> next(it)
StopIteration:
>>> i = 'this is a string'
>>> for i in range(2, 2): pass
>>> print(i)
this is a string
>>> del i
>>> for i in range(2, 2): pass
>>> print(i)
NameError: name 'i' is not defined