Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/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 斐波那契立方体_Python_List_Integer - Fatal编程技术网

Python 斐波那契立方体

Python 斐波那契立方体,python,list,integer,Python,List,Integer,在下面的代码中出现了问题,看起来我在列表或int操作中遇到了问题,所以我应该在哪里以及如何进行更改以更正此代码: cube = lambda x:x**3 def fibonacci(n): fb=[0,1] for i in range(2,n-1): fb.append([fibonacci(i-1)+fibonacci(i-2)]) return fb if __name__ == '__main__': n = int(input())

在下面的代码中出现了问题,看起来我在列表或int操作中遇到了问题,所以我应该在哪里以及如何进行更改以更正此代码:

cube = lambda x:x**3
def fibonacci(n):
    fb=[0,1]
    for i in range(2,n-1):
        fb.append([fibonacci(i-1)+fibonacci(i-2)])
    return fb
if __name__ == '__main__':
    n = int(input())
    print(list(map(cube, fibonacci(n))))




Error:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-761cca8f2b48> in <module>
      7 if __name__ == '__main__':
      8     n = int(input())
----> 9     print(list(map(cube, fibonacci(n))))

<ipython-input-9-761cca8f2b48> in <lambda>(x)
----> 1 cube = lambda x:x**3
      2 def fibonacci(n):
      3     fb=[0,1]
      4     for i in range(2,n-1):
      5         fb.append([fibonacci(i-1)+fibonacci(i-2)])

TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'int'
cube=lambda x:x**3
def fibonacci(n):
fb=[0,1]
对于范围(2,n-1)内的i:
附加([fibonacci(i-1)+fibonacci(i-2)])
返回fb
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
n=int(输入())
打印(列表(映射(立方体,斐波那契(n)))
错误:
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
7如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuuuu':
8 n=int(输入())
---->9打印(列表(地图(立方体,斐波那契(n)))
in(x)
---->1立方=λx:x**3
2 def斐波那契(n):
3 fb=[0,1]
对于范围(2,n-1)内的i,为4:
5 fb.附加([fibonacci(i-1)+fibonacci(i-2)])
TypeError:不支持**或pow()的操作数类型:'list'和'int'

您可能需要替换

fb.append([fibonacci(i-1)+fibonacci(i-2)])


现在,您正在将一个以标量作为输入的函数映射到一个包含数字(例如0和1)以及列表(例如[1])的列表上。

您应该确定希望返回什么。看起来您希望它返回一个列表,因为您正在将结果传递给
map()
。如果是这样的话,递归调用也会返回一个列表,这一行实际上没有意义:

fb.append([fibonacci(i-1)+fibonacci(i-2)])
因为
fibonacci(i-1)
fibonacci(i-2)
也都是列表,但是看起来您希望这里的整数是加法的结果

因为您在函数中使用一个循环,并且有一个种子列表,所以不需要递归。只需索引到列表
fb

def fibonacci(n):
    fb=[0,1]
    for i in range(2,n-1):
        fb.append(fb[i-1] + fb[i-2])
    return fb

n = 9
fibonacci(n)
# [0, 1, 1, 2, 3, 5, 8, 13]

有了它,多维数据集
map()
就可以工作了。

当您遇到这样的问题时,您应该查看中间步骤,并确保它们是您所认为的。例如,这是否打印您认为应该打印的内容:
print(斐波那契(5))
def fibonacci(n):
    fb=[0,1]
    for i in range(2,n-1):
        fb.append(fb[i-1] + fb[i-2])
    return fb

n = 9
fibonacci(n)
# [0, 1, 1, 2, 3, 5, 8, 13]