【问题标题】:Python: Printing a List from a starting point to a defined rangePython:从起点打印列表到定义的范围
【发布时间】:2018-03-04 20:45:36
【问题描述】:

这是我的代码;我知道这是一团糟,但如果那样的话,我只是在了解基础知识。我的问题是最后打印一个列表。你看,我已经尝试了很多东西,但它一直告诉我“'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

【问题讨论】:

  • 您是根据值的范围或列表中的顺序打印?
  • 我相信我找到了问题:“f”是 fib 中的起始位置。序列,但我插入了一个字符“f2”太少的单词,所以它试图在起点之前打印一些东西。这当然行不通。我希望它从它指示“f”的点继续“f2”指示的步数。等等:我明白了!只需将“f”添加到“f2”

标签: python list printing tuples fibonacci


【解决方案1】:

我认为您已经确定问题出在fibonacciNumbers[f, f2]。所以两部分:

1) 对列表进行切片的正确语法是什么?用: 分隔索引,而不是,。所以fibonacciNumbers[f:f2](注意切片中的最后一个索引是f2-1,所以你可能想要fibonacciNumbers[f:f2+1])。 (编辑:要清楚l[i:j] 的意思是“给我列表l 的元素i, i+1, ..., j-1,而不是“给我j 从索引i 开始的元素。”)

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

我猜“'list' object is not callable”发生在你写fibonacciNumbers(f,f2)之类的东西时。使用括号,您正在调用一个名为 fibonacciNumbers 的函数,但它是一个列表而不是函数,因此不可调用。

【讨论】:

  • 感谢您的更正;他们正在创造奇迹!但是,现在,当我将输入“5”(或实际上大于 2 的任何内容)分配给“f”时,它会将打印的列表留空。
猜你喜欢
  • 1970-01-01
  • 2020-06-14
  • 2018-11-14
  • 1970-01-01
  • 2011-07-20
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
相关资源
最近更新 更多