Python:将列表从起点打印到定义的范围

时间:2018-03-04 20:45:37

标签: python list printing tuples fibonacci

这是我的代码;我知道它是一团糟,但我只是通过基础知识,如果那样。我的问题是最后打印一个列表。你看,我已经尝试了很多东西,但它一直告诉我要么"' list'对象不可调用"或"意外类型:元组......"现在,元组对我来说没什么意义,因为我们还没有在课堂上达到这一点,但我还是不想要一个元组。我想打印一个从指定点开始的列表" f"范围为" f2"。但我无法做到这一点。 我做错了什么?

def main():
    f = int(input("Starting Place in Code: "))
    message = input("simple message: ")
    f2 = len(message)
    messageList = []
    fibonacciNumbers = [0, 1]
    messageNumList = []
    f3 = fibonacciNumbers[f: f+f2]

    for let in message:
        messageList.append(let)

    for let in messageList:
        messageNumList.append(ord(let))

    for i in range(2, 700):
        fibonacciNumbers.append(fibonacciNumbers[i - 1] + fibonacciNumbers[i - 2])

    #print(fibonacciNumbers)
    print(f3)
    print(f2)
    print(messageList)
    print(messageNumList)
main()

Starting Place in Code: 5
simple message: fish
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, ...]
[5, 8, 13, 21, 34, 55]
4
['f', 'i', 's', 'h']
[102, 105, 115, 104]

Process finished with exit code 0

1 个答案:

答案 0 :(得分:1)

正如我认为您已经确定问题的fibonacciNumbers[f, f2]。所以有两个部分:

1)切片列表的正确语法是什么?使用:分隔索引,而不是,。所以fibonacciNumbers[f:f2](请注意,切片中的最后一个索引将为f2-1,因此您可能需要fibonacciNumbers[f:f2+1])。 (编辑:要清楚l[i:j]表示"为我提供列表i, i+1, ..., j-1的元素l,而不是"从index {开始给我j元素{1}}"。)

2)错误是什么意思?元组就像一个列表,但已修复 - 您无法更改或添加元素:i是一个元组,(1,2,3)是一个列表。有时括号是不必要的。当您编写[1,2,3]时,Python将其解释为"给我列表的元素,其索引是元组fibonacciNumbers[f, f2]",这是没有意义的,因此例外。 (例如,您可以通过尝试访问列表的元素(f,f2)来查看变体。)

我在猜测"' list'对象不可调用"当你写"a"之类的东西时发生了。使用括号,您可以调用名为fibonacciNumbers(f,f2)的函数,但它不是函数列表,因此无法调用。