Python TypeError:列表索引必须是整数,而不是类型

时间:2017-09-20 08:46:05

标签: python list types

我是Python的初学者,我做了一个非常简单的练习。 我将Hello World项目拆分为三个文件。

1.run.py包含主要代码。

run.py
--------------------------------
#!/usr/bin/python

import lib

lib.hw()
printer = lib.hw()
print(printer)

2.lib.py函数。

lib.py
--------------------------------
import data
def hw():
  return(data.messages[0])

3.data.py列表。

data.py
--------------------------------
messages = [ "Hello, World!", "It Works" ]

如果您运行run.py,它将打印" Hello,World!"。

我想添加一种方法来选择要从List中打印的值。 所以我在run.py中添加了一个输入promt,并将该int存储在变量" choice"那么我想把它推到"列表索引"在文件lib.py" [0]"这样我就可以决定要打印出哪个值了。当然,我写它的方式并不起作用,只是为了解释我想要做的事情。

run.py
--------------------------------
#!/usr/bin/python
import lib

print("Enter 0 or 1 to print a Message!")
choice = int(input("Enter 0 or 1: "))

lib.hw()
printer = lib.hw()
print(printer)

这里我用[choice]替换了[0]。

lib.py
--------------------------------
import data
def hw():
  return(data.messages[choice])

当然这会导致错误:

/functions/lib.py", line 5, in hw
    return(data.messages[choice])
TypeError: list indices must be integers, not type

我怎样才能以最简单的方式解决这个问题?

2 个答案:

答案 0 :(得分:0)

您需要告诉您选择的功能。在python中,变量不会在多个文件上共享。您需要将def hw():更改为def hw(choice):,将printer = lib.hw()更改为printer = lib.hw(choice)

答案 1 :(得分:0)

choicerun.py传递到lib.hw()功能,并修改hw()中的lib.py功能,以获取参数choice

run.py
--------------------------------
#!/usr/bin/python
import lib

print("Enter 0 or 1 to print a Message!")
choice = int(input("Enter 0 or 1: "))

printer = lib.hw(choice)
print(printer)

lib.py
--------------------------------
import data
def hw(choice):
   return(data.messages[choice])