python学习
输出前1000的素数
先来输出前10的素数表示我遇到的问题
刚开始我的想法是:
for num in range(1,11): #一个循环表示质数
for i in range(2,num): #第二个循环做表示因数
if num % i == 0: #判断
break #结束循环
else:
print(num) #输出质数
然而输出结果为:
3
5
5
5
7
7
7
7
7
9
出现了多个输出,最后通过研究发现是缩进出现了问题
for num in range(1,11):
if num > 1:
for i in range(2,num):
if num % i == 0:
break
else: #这里else缩进改变了
print(num)
这样就使else与第二个for循环位于同级,使一个质数不会因为循环而不断输出。
但在找到缩进错误前,我尝试了另一种方法,就是使用列表,来统计数字的因数个数,列表长度为2,即因数个数为2,从而实现了对质数的判断,具体如下:
l = [] #创建一个空列表
for num in range(1,100): #循环
for i in range(1,num+1):
if (num % i) == 0:
l.append(i) #将因数加入列表
if len(l) == 2: #判断列表元素个数
print(num)
但是结果输出却只有一个数
最后我发现了错误:
l = []
for num in range(1,100):
for i in range(1,num+1):
if (num % i) == 0:
l.append(i)
if len(l) == 2:
print(num)
l = [] #这里再将列表清空
与上一条代码相比,多了一个清空列表的操作,使列表l继续在循环中使用。
通过以上错误分析:
应当注意代码的缩进和循环中归0的操作。
标签:输出,缩进,python,素数,列表,range,num,循环 From: https://www.cnblogs.com/102204216zxf/p/16741678.html