Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 斐波那契对与matplotlib_Python - Fatal编程技术网

Python 斐波那契对与matplotlib

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

我创建了一个函数,询问您希望看到多少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 = 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数字。是的,这是全部代码。如果有帮助,请接受答案。它有助于整个社区识别正确答案。点击答案旁边的勾号即可。干杯。