为什么要给定2个参数,TypeError:恰好需要2个参数给定1个?

问题描述

我不知道为什么我的带有两个参数的函数在给定两个参数的情况下会返回一个错误提示我仅给定了一个参数。我试图获取斐波那契算法的输出,然后将其乘以第二个用户输入。

谢谢

 29 def population(n,k):
 30     n = int(sys.argv[1])
 31     k = int(sys.argv[2])
 32 
 33     if n in range (1,10000):
 34         pass
 35     else:
 36         print("day out of range")
 37     if k in range(1,10000):
 38         pass
 39     else:
 40         print("growth rate out of range")
 41     FibArray = [0,1]
 42 
 43     #reproduction rate is Fn=F(n-1)+F)n-2)
 44     #start fibonacci sequence on one and end on the nth day,multiply by the rate or reproduction
 45     while len(FibArray) < n + 1:
 46         FibArray.append(0)
 47 
 48     if n <=1:
 49         return n
 50     else:
 51         if FibArray [int(n)-1]==0:
 52             FibArray[n-1]=population(n-1)
 53 
 54         if FibArray[n-2]==0:
 55             FibArray[n-2]=population(n-2)
 56 
 57     FibArray[n]= FibArray[n-2] + FibArray[n-1]
 58     X = FibArray[n]
 59     return k * X
 60 
 61 if __name__=="__main__":
 62     n = int(sys.argv[1])
 63     k = int(sys.argv[2])
 64     pop = population(n,k)
 65     print("Your population size on day {} is {}".format(n,pop))




Traceback (most recent call last):
  File "./fibonacci.py",line 64,in <module>
    pop = population(n,k)
  File "./fibonacci.py",line 55,in population
    FibArray[n-2]=population(n-2)
TypeError: population() takes exactly 2 arguments (1 given)

解决方法

要回答您的问题,我想您会再次读取该错误。它说错误发生在第55行,您在其中仅使用一个参数population()调用了(n-2)函数。那就是一个问题。您需要在那里修改代码。