Python爬虫作业第一次分享

开启Python的漫长道路

缘分

有个问题一定要说明,看代码跟你自己写代码真的是天壤之别。话不多说,当自己是小白开始走你。
今天的开工仪式让我懂得什么叫做殊途同归,做开发的,做测试的,做产品的,还有找食材的。真是6的不行。大家踏上同一条道路。

今天的测试题关于一道很简单的算法,本以为满简单的但是还是坑满满。

第一题:求100以内的素数
素数,所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。

想法比较简单:挨个除呗,取余就好。逆向思维,能被不是1且不是自己本身的数除的就算素数,但凡能被除就直接去掉。之前看了一些python的语法,功能实在强大。对于list的操作很丰富。
第一版:

L = range(2,100)

for x in L:
  for y in xrange(2,x):
    if x%y==0
      L.remove(x)
      break
print L

怎么样是不是很赞?坑爹啊!!结果多了很多,很多数字没有被remove,为啥?关键问题在第一个for循环里面。
我直接通过L在循环,遇到不符合素数要求的就删掉,那么问题来了。我这么一删除,list的结构就发生了变化,对于数组的本质来说,后面的一个元素就会顶上去,到达数组当前指针的位置。辣么for还在跑着,指针+1下一个元素了,这样顶上去的那个元素就被忽视了,不做判断了。所以多出了那么多。于是稍微修改了一下,把第一个for循环中条件L换成另外一个list。

L = range(2,100)

for x in range(2,100):
    for y in xrange(2,x):
        if x%y==0:
            L.remove(x)
            break
print L

不过吸取教训,在for循环中对于切片,元组,字典之类的操作,在使用remove元素的时候还是要小心。完全可以自己操作指针指向。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 5,969评论 0 2
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,235评论 1 118
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 10,543评论 0 41
  • 真希望这一切都是浮云啊 父母这几年一直在催我早点结婚,我的心好累。我现在才22岁,都没做好负责...
    月生胜阅读 1,778评论 1 2

友情链接更多精彩内容