Fibonacci sequence

来源:互联网 发布:淘宝的宝贝描述分数 编辑:程序博客网 时间:2024/05/01 12:48

#################################################################################Question:                                                                     ##Each new term in the Fibonacci sequence is generated by adding                ##the previous two terms. By starting with 1 and 2, the first 10 terms will be: ##                                                                              ##    1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...                                    ##                                                                              ##By considering the terms in the Fibonacci sequence whose values do not exceed ##four million, find the sum of the even-valued terms                           ##By IT05 2012-08-14#################################################################################ones = [1,2]while s[-1]<=4000000:    s.append(s[-1]+s[-2])print(sum([i for i in s if i%2==0]))#twob = [3,5]s = [2]while s[-1]<=4000000:    s.append(sum(b))    b = [b[1]+s[-1],b[1]+s[-1]+s[-1]]s.pop()print(sum(s))

for i in s:    if i%2==1:        s.remove(i)        print('remove:'+str(i))

一开始是想把结果里面的不合要求的数踢出,

于是用这段代码,然后想通过直接执行

print(sum(s))

即可获得所需结果,但是问题就出现了.(先不探讨,这种方法吃力不讨好)
因为在remove()的过程中会导致s元组发生改变,这样的话,由于for一开
始是假定元组s是不变的,它是通过类似的索引来读取元组的,虽然这个我
没有查到资料,但是我在测试中有这种规律,比如执行如下代码:

s = [1,2]while s[-1]<=4000000:    s.append(s[-1]+s[-2])print(s)#循环1for i in s:    if i%2==1:        s.remove(i)print(s)#循环2for i in s:    if i%2==1:        s.remove(i)print(s)

最后的结果是:
[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987,...]
[2, 5, 8, 21, 34, 89, 144, 377, 610, 1597, 2584, 6765, 10946,...]
[2, 8, 34, 144, 610, 2584, 10946, 46368, 196418, 832040, 3524578]
假定上面三行分别命名为A,B,C行
那么在循环1执行时,第一次循环发现1%2不为1,所以把1踢掉,如此是s=[2,3,...],
即s[0]=2,在执行第二次循环时,相当于执行索引1,即此时i=s[1],要是s没变的话,
很好,s[1]还是2,但是现在变了,变成了3,所以此时会把s[1]踢掉,所以s=[2,5,8,....]
执行第三次循环时,相当于索引2,即i=s[2],由于s[2]=8,s所以不作处理,但是我们
回过头却发现那个5因为偷偷地跑到前面去了,导致循环执行完之后,5被漏掉了。


后来回头想了下,其实没必要这么做的,直接把符合要求的提出来即可!


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 金龙自切尾怎么办 微信无法正常打开怎么办 大三下体育挂了怎么办 大二体育挂科了怎么办 大四体育老师不给成绩怎么办 大四必修挂科了怎么办 大学挂了20科怎么办 大专重修都没过怎么办 如果孩子一年级就考不及格怎么办 后滚翻做不过去怎么办 练习颠球时脚面总网上翘怎么办 踢完足球腿疼怎么办 针对初中不听话的学生怎么办 初中一年级成绩太差怎么办 新牙长出来乳牙没掉怎么办 小孩乳牙没掉就长出新牙怎么办 复读一年还考大专怎么办 宝贝刚上幼儿园哭怎么办 新入幼儿园宝贝老是哭怎么办 孩子不太会说话幼儿园不要怎么办 幼儿上台表演害羞胆怯怎么办 小学转学学校不接收怎么办 在校读书的留守儿童怎么办 足球比赛中裁判碰到球怎么办 花盆的土变硬板结怎么办 lol皮肤不想要了怎么办 泉州小黄人自行车被偷怎么办 小学数学没学好上初中怎么办 50天的宝宝缺钙怎么办 5个月的宝宝缺钙怎么办 空调接电后指示灯不亮怎么办 欧普led灯坏了怎么办 led灯条芯片坏了怎么办 太阳能板只有电压没有电流怎么办 农村按空调房屋不保温怎么办 自己一个人想去足疗店不敢去怎么办 吊灯led灯坏了怎么办 办健身卡老板携款跑路了怎么办 武安丰尚健身怎么办卡 热敷后眼睛肿了怎么办 两眼视力差距大怎么办