我想在def fibonnaci()函数下引用listNum,但出现以下错误:TypeError:'range'对象不可调用。如何解决这个问题?
count = 0
fibC = 1
def fibonnaci():
listNum = range(1,400)
listFib = list()
for num in listNum:
number = listNum(num - 1) + listNum(num - 2)
listFib.append(number)
return listFib
def numberOfFibonnaci(numbers):
fibonnaci()
while count < numbers:
print(listFib[fibC+i])
count += 1
i += 1
def main():
askF = input("Enter number of Fibonnaci")
numberOfFibonnaci(askF)
main()
期望引用指定整数之前的整数,并在列表中的整数前添加两个空格。
相反,出现此错误:TypeError:“范围”对象不可调用。
答案 0 :(得分:1)
您需要使用方括号[]
通过索引访问listNum的项目:
count = 0
fibC = 1
def fibonnaci():
listNum = range(1, 400)
listFib = list()
for num in listNum:
number = listNum[num - 1] + listNum[num - 2] # you need to access by index!
listFib.append(number)
return listFib
def numberOfFibonnaci(numbers):
listFib = fibonnaci()
i = 0
while i < numbers:
print(listFib[fibC + i])
i += 1
def main():
askF = input("Enter number of Fibonnaci")
numberOfFibonnaci(int(askF))
main()
输出:
Enter number of Fibonnaci12
3
5
7
9
11
13
15
17
19
21
23
25
答案 1 :(得分:0)
范围用于为循环创建一个迭代器,因此您无法尝试调用它。如果您想要一个范围内的数字列表,则可以尝试使用列表理解。看起来像这样:
listNum = [i for i in range(1,400)]
,其中listNum成为包含从1到399的条目的列表