2017-09-20 127 views
-1

我是一名Python初學者,我有一個非常簡單的練習。 我把我的Hello World項目分成三個文件。Python TypeError:列表索引必須是整數,而不是類型

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!」。

我想添加一種方法來選擇打印出列表中的哪個值。 所以我在run.py中添加一個輸入promt並將該int存儲在變量「choice」中,然後我想將它推送到文件lib.py「[0]」中的「list indices」,以便我可以決定哪個值我想打印出來。當然,我寫它的方式不起作用,它只是爲了解釋我即將做的事情。

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 

我怎麼能以最簡單的方式解決這個問題?

+0

你不及格'choice'到'lib.hw()'。 – bereal

+0

我真的不知道該怎麼做。 – benice

+1

你可以在'return(data.messages [choice])之前放一個'print(選擇)'語句'並告訴我你得到了什麼? – Stael

回答

0

通行證choicelib.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]) 
+0

非常感謝!刪除lib.hw()並在兩個文件中添加選項都有訣竅。我現在明白我沒有考慮過什麼。 – benice

+1

這看起來像它會工作,但你知道爲什麼OP得到'TypeError:列表索引必須是整數,而不是'NameError:name'選項'沒有定義'(這是我所期望的) 。如果定義了它,爲什麼它是一個類型? – Stael

0

你需要告訴你選擇的功能。在python中,變量不會在多個文件上共享。你需要從run.py改變def hw():def hw(choice):printer = lib.hw()printer = lib.hw(choice)

相關問題