繁体   English   中英

使用python的有限斐波那契数列

[英]limited Fibonacci series using python

我想编写一个代码,以打印斐波那契数列直到特定数字的列表。 在这种情况下,可以说它是30。问题是它总是打印太多的数字,它将最多打印34,而不是21

l=[1,1]
i=0
while l[i+1]<30:
    l.append(l[i]+l[i+1])
    i+=1
print l

好吧,您必须计算下一项,以查看其是否大于30。

因此,您可以选择计算它而不存储它(干净的解决方案):

l=[1, 1]
i = 0
while True:
    next_term = l[i]+l[i+1]
    if next_term > 30:        
        break
    else:
        l.append(next_term)
        i += 1
print l

或者,使用您现有的脚本,根本不打印它(肮脏的解决方案):

l=[1,1]
i=0
while l[i+1]<30:
    l.append(l[i]+l[i+1])
    i+=1
print l[:-1]  # or l.pop(); print l
l=[1,1]
i=0
while l[i+1]<30:
    l.append(l[i]+l[i+1])
    i+=1
l.pop()
print l

您要在检查后追加。 最后将其弹出。

修改您的while条件:

while (l[i]+l[i+1])<30:

st:

l=[1,1]
i=0
while (l[i]+l[i+1])<30:
    l.append(l[i]+l[i+1])
    i+=1

>>> print(l)
[1, 1, 2, 3, 5, 8, 13, 21]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM