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



这是我的代码;我知道这是一团糟,但如果那样的话,我只是在了解基础知识。我的问题是最后打印一个列表。你看,我已经尝试了很多东西,但它一直告诉我"'列表'对象不可调用"或"意外类型:元组..."现在,元组对我来说没有任何意义,因为我们在课堂上还没有达到这一点,但无论如何我都不想要元组。我想打印一个从指示点"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

我想你已经确定了问题所在fibonacciNumbers[f, f2]。所以两部分:

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

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

我猜"'列表'对象不可调用"发生在您编写类似fibonacciNumbers(f,f2)的东西时。使用括号,您正在调用一个名为fibonacciNumbers的函数,但它是一个列表而不是函数,因此不可调用。

最新更新