我正在尝试创建一个程序,它创建一个Fibonacci序列,最大值为200的序列。我有基本的设置,我可以计算序列,但我希望以某种方式显示它,我忘了怎么做到这一点。
我希望将数字写入我最初定义为空的数组,计算数字并将它们分配给数组并打印所述数组。在我下面的代码中,计算是可以的,但是当打印到屏幕时,数组显示的值233高于200而不是我正在寻找的。我希望打印出存储在数组中的200以下的所有值。
有没有更好的方法来最初为我想要的数据定义数组,最后在所有元素低于200的情况下打印数组的正确方法是什么?
代码如下:
#This program calculates the fibonacci sequence up to the value of 200
import numpy as np
x = np.empty(14, float) #Ideally creates an empty array to deposit the fibonacci numbers in
f = 0.0 #Dummy variable to be edited in the while loop
#Here the first two values of the sequence are defined alongside a counter starting at i = 1
x[0] = 0.0
x[1] = 1.0
i = 1
#While loop which computes the values and writes them to the array x
while f <= 200:
f = x[i]+x[i-1] #calculates the sequence element
i += 1 #Increases the iteration counter by 1 for each loop
x[i] = f #set the array element equal to the calculated sequence number
print(x)
这里有一个快速终端输出供参考,理想情况下我希望删除最后一个元素:
[ 0. 1. 1. 2. 3. 5. 8. 13. 21. 34. 55. 89.
144. 233.]
答案 0 :(得分:1)
这里有许多风格点。首先,你应该使用整数,而不是浮点数。其次,您应该简单地将每个数字附加到列表中,而不是预先定义特定大小的数组。
这是一个互动环节:
>>> a=[0,1]
>>> while True:
b=a[-1]+a[-2]
if b<=200:
a.append(b)
else:
break
>>> a
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]
答案 1 :(得分:0)
这是一种不使用索引的方法:
a = 0
x = [a]
b = 1
while b <= 200:
x.append(b)
a, b = b, a+b
print(x)