空列表变量存储为 'None' 类型

2024-04-24 14:45:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python3.3.2编写一个简短的函数。这是我的模块:

from math import sqrt
phi = (1 + sqrt(5))/2
phinverse = (1-sqrt(5))/2

def fib(n): # Write Fibonacci numbers up to n using the generating function
    list = []
    for i in range(0,n):
        list = list.append(int(round((phi**i - phinverse**i)/sqrt(5), 0)))
    return(list)

def flib(n): # Gives only the nth Fibonacci number
    return(int(round((phi**n - phinverse**n)/sqrt(5), 0)))

if __name__ == "__main__":
    import sys
    fib(int(sys.argv[1]))

当我跑的时候斐波(6) ,我得到以下错误:

^{pr2}$

如何更正此错误?在


Tags: theimportreturndef错误syssqrtlist
3条回答

append调用不返回列表,它将就地更新。在

list = list.append(int(round((phi**i - phinverse**i)/sqrt(5), 0)))

应该变成

^{pr2}$

您可能还应该调用参数而不是list,因为它也用这个词来标识list类。在

您还可以使用列表理解:

def fib(n):
    '''Write Fibonacci numbers up to n using the generating function'''

    return [int(round((phi**i - phinverse**i)/sqrt(5), 0))) for i in range(0, n)]

返回类型

list.append

None

当你这样做时list = list.append(int(round((phi**i - phinverse**i)/sqrt(5), 0)))

它正在分配list=None

就这么做吧

^{pr2}$

另外,list是一种内置类型。请使用其他名称。在

相关问题 更多 >