调用由“范围”创建的列表的最佳方法是什么?

时间:2019-09-30 20:44:26

标签: python python-3.x

我想在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:“范围”对象不可调用。

2 个答案:

答案 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的条目的列表

文档:https://docs.python.org/3/tutorial/datastructures.html