Python 斐波那契对与matplotlib
我创建了一个函数,询问您希望看到多少fib数字,然后从序列中返回那么多数字 我正在尝试从我创建的数字列表中获取fib对。这就是我迷路的地方 0,1,1,2,3,5,8,13 我想要的那双像这样 0,1 1,1 1,2 2,3 3.5 5,8 8,13 我似乎遗漏了一些东西,因为我的fib数字列表是空的,但调用时仍然返回值 见下面的代码,请解释我遗漏了什么Python 斐波那契对与matplotlib,python,Python,我创建了一个函数,询问您希望看到多少fib数字,然后从序列中返回那么多数字 我正在尝试从我创建的数字列表中获取fib对。这就是我迷路的地方 0,1,1,2,3,5,8,13 我想要的那双像这样 0,1 1,1 1,2 2,3 3.5 5,8 8,13 我似乎遗漏了一些东西,因为我的fib数字列表是空的,但调用时仍然返回值 见下面的代码,请解释我遗漏了什么 import matplotlib.pyplot as plt fib_nums = [0, 1] n = 0 num1 = 0 num2
import matplotlib.pyplot as plt
fib_nums = [0, 1]
n = 0
num1 = 0
num2 = 1
x_coords = [1,2]
x_count = 3
y_coords = [0,1]
coord_pairs = ()
def fib(n):
global x_coords
global x_count
a = 0
b = 1
c = 1
for i in range(n-2):
c = a + b
a = b
b = c
fib_nums.append(c)
y_coords.append(c)
x_coords.append(x_count)
x_count = x_count + 1
return(fib_nums)
for num in fib_nums:
num1 = num1 + 1
num2 = num2 + 2
temp_list = [fib_nums[num1:],fib_nums[num2:]]
n = int(input('How many Fib numbers would you like to see? : '))
fib(n)
print(fib_nums)
print(temp_list)
# plt.scatter(y_coords, x_coords) # .scatter(x,y) <<<----- this is actually how this works
# plt.show()
导入matplotlib.pyplot作为plt
fib_nums=[0,1]
n=0
num1=0
num2=1
x_坐标=[1,2]
x_计数=3
y_坐标=[0,1]
坐标对=()
def纤维(n):
全球x_坐标
全局x_计数
a=0
b=1
c=1
对于范围(n-2)内的i:
c=a+b
a=b
b=c
fib_nums.追加(c)
y_coords.追加(c)
x_coords.append(x_计数)
x_计数=x_计数+1
返回(fib_nums)
对于fib_nums中的num:
num1=num1+1
num2=num2+2
临时列表=[fib_nums[num1:],fib_nums[num2:]
n=int(输入('您希望看到多少Fib数字?:'))
纤维蛋白原(n)
打印(fib_nums)
打印(临时列表)
#plt.scatter(y_coords,x_coords)#scatter(x,y)这是一件非常常见的事情,我已经多次看到了zip
实现这一点:
fib_seq = fib(10)
pairs = [(x,y) for x,y in zip(fib_seq, fib_seq[1:])]
解释:
这里有两个序列:fib_-seq
和fib_-seq[1://code>:
0,1,1,2,3,5
1,1,2,3,5,8
zip
将从每个序列中提取第一个元素,并从中创建一个元组:
[(0,1),(1,1),(1,2),(2,3),…]我想你需要这个:
fib = [0,1]
n = int(input())
for i in range(2,n):
fib.append(fib[i-1]+fib[i-2])
pairs = []
for i in range(n-1):
pairs.append([fib[i],fib[i+1]])
print(pairs)
输入:
10
输出:
[[0, 1], [1, 1], [1, 2], [2, 3], [3, 5], [5, 8], [8, 13], [13, 21], [21, 34]]
绘图:
import matplotlib.pyplot as plt
import numpy as np
pairs = np.array(pairs)
plt.scatter(pairs[:,0],pairs[:,1])
plt.show()
输出:
[[0, 1], [1, 1], [1, 2], [2, 3], [3, 5], [5, 8], [8, 13], [13, 21], [21, 34]]
您是否要求将斐波那契数列转换为斐波那契数列对?您能解释一下问题中的逻辑吗?它将帮助我们确保您的代码符合您的预期。zip
无论如何都会生成元组,因此list(zip(…)
稍微简单一些。正如我上面所说,一行程序有点难以遵循。我知道我的代码充其量只是初步的,但我仍然停留在前几章中。我相信你可以理解这样的列表理解,尽管作为最终目标是必要的,但目前不是我的主要关注点,我希望看到并理解更多的分解代码。谢谢你的意见(y)如果是的话,请你再解释一下,因为这正是我想要的。谢谢你的时间,它说列表索引超出范围了?我能说的就是这段代码太棒了,我只希望我能完全理解它。对于范围(2,n)中的num:fib.append(fib[num-1]+fib[num-2])print(fib[num-1]+fib[num-2])最初,列表中只有2个数字,然后将这两个数字相加并附加到列表中,即fib.append(fib[num-1]+fib[num-2]),当需要第n个fibonacci数字时,则需要添加第n-1和第n-2个fibonacci数字。是的,这是全部代码。如果有帮助,请接受答案。它有助于整个社区识别正确答案。点击答案旁边的勾号即可。干杯。