2012-06-25 30 views
1

所以我在python 3.2中編寫了一個tic tac腳趾遊戲,我花了整整一天的時間試圖解決這個問題,並通過我的代碼,腳本或任何你想要調用它的東西,這麼多次,仍然不能找到它。我用google搜索了它,所有的答案都讓人困惑,或者這個人的腳本與我的tic tac toe遊戲有些不同。請注意,我只是python的初學者。當我嘗試運行它時出現一個錯誤:TypeError:在Python 3.2中'int'對象不可調用'?

Traceback (most recent call last): 
    File "/Users/user/Desktop/tic tac toe game.py", line 41, in <module> 
    input = input("Select a spot:") 
TypeError: 'int' object is not callable" 

這是什麼意思?這是它說它有問題的代碼:

while True: 

    input = input("Select a spot:") 
    input = int(input) 

如果你能幫助我,那將意味着那麼多。它一直很煩人,我一直在努力修復它。

回答

6

input()是一個Python函數,你用它都作爲函數和標識符

使用input作爲變量名稱將工作的第一次,但通過循環第二次出現的那個名字,現在與一個整數變量相關不會是一個input()功能任何更長的時間。

因此,與其功能input()你只是有一個變量命名爲input,因此(在評論中提到通過@poke和@DSM也)錯誤

使用answer爲您的變量名稱將是一個更好的主意:

while True: 
    answer = input("Select a spot:") 
    answer = int(answer) 
+1

你對這不是一個好主意是正確的,但我懷疑這是這裏的問題。 – martineau

+4

@martineau這是因爲賦值處於循環狀態。第一次迭代會順利進行,但第二次迭代中,「輸入」不再可調用。 – poke

+0

@Ali Lewis:可以使用'input()',只是不要將結果賦值給一個相同名字的變量。 – martineau

4

您使用的名稱爲input的結果,它取代你試圖調用input功能。使用不同的名稱。

編輯:當您循環時,在第二次迭代到達時,您已將變量input重新反轉爲您的用戶輸入,因此它不再是內置函數,而是您剛剛將用戶輸入轉換爲的整數。名稱input不能同時引用兩個不同的東西。

2

第一次調用

input("Select a spot:") 

它工作正常 - 返回一個字符串,可以將其轉換爲int,並將其存儲到input

第二次調用input時,它取出剛存儲的整數並嘗試將其作爲函數運行。這會失敗,並顯示錯誤消息。

相關問題