1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python入门经典代码-【python】编程语言入门经典100例--12

python入门经典代码-【python】编程语言入门经典100例--12

时间:2018-09-01 15:52:35

相关推荐

python入门经典代码-【python】编程语言入门经典100例--12

1 #题目:判断101-200之间有多少个素数,并输出所有素数。

代码:3 tmp = [n for n in range(101,201)]

4 for i in reversed(tmp):

5 for j in range(2,i):

6 if (i%j == 0):

7 tmp.remove(i)

8 break

9 print('101到200之间有%d个素数'%len(tmp))

10 print('这些素数分别是:')

11 print (tmp)

运行结果:[root@HK code_100]# python code_12.py

101到200之间有21个素数

这些素数分别是:

[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]

[root@HK code_100]#

代码解释:这个代码用了一种比较繁琐的方式,不过用来练习list的操作还是不错的,因为牵扯到要统计素数的个数,

我觉得用len(list)比较合适, 思路是遍历整个list,发现不是素数的就从list中删除,最后剩下的

就是101到200之间的素数。

3 tmp = [n for n in range(101,201)] #建立101到200的升序list

4 for i in reversed(tmp): #倒叙遍历tmp列表

5 for j in range(2,i): #针对tmp中的每个成员,用2到(i-1)进行取余

6 if (i%j == 0): #如果取余等于零,说明不是素数

7 tmp.remove(i) #将不是素数的数字从list中删除

8 break #直接跳出循环,不进行后面的验证,以节省资源

9 print('101到200之间有%d个素数'%len(tmp)) #格式化输出素数的个数

10 print('这些素数分别是:')

11 print (tmp) #打印素数

在第四行中用了倒叙遍历list,因为tmp.remove的特点,如果用正序是得不出期望结果的,因为remove删掉一个元素的时候,

这个元素后面的所有元素的下标都会减1(如果所有元素下标都不变就不会有问题),但是for循环的迭代是下标依次加1,这样就会导致

在遍历list的时候有一些元素是遍历不到的,用逐步调试可以看到效果具体可以查一下remove的详细解释,这里使用倒叙是从后面开始减,

之前的下标不会用变化,这样就不会影响到最终的结果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。