這裏是我的腳本,http://pastebin.com/zgRrBX0U「‘廉政’對象不是可調用的」錯誤
對於參考這是肖捷思銳的「學習Python中艱難地」的EX36的腳本。 我試圖創建一個基於文本的冒險,設計從塞爾達傳說的第一級。
但是當我開始進入程序時,我遇到了一個問題。它的工作原理是讓你從主房間開始。但不管朝哪個方向走,都會有錯誤的說法。 「'int'對象不可調用。'我無法弄清楚這是什麼意思搜索。或者看看pydocs。任何幫助將不勝感激。
這裏是我的腳本,http://pastebin.com/zgRrBX0U「‘廉政’對象不是可調用的」錯誤
對於參考這是肖捷思銳的「學習Python中艱難地」的EX36的腳本。 我試圖創建一個基於文本的冒險,設計從塞爾達傳說的第一級。
但是當我開始進入程序時,我遇到了一個問題。它的工作原理是讓你從主房間開始。但不管朝哪個方向走,都會有錯誤的說法。 「'int'對象不可調用。'我無法弄清楚這是什麼意思搜索。或者看看pydocs。任何幫助將不勝感激。
line 47:
def roomBA(key, life, door_open, roomBA, roomDA):
您正在此處定義一個名爲roomBA的函數。
行129:
roomBA = 0
在這裏,你已經改變的Roomba是數字0了。
因此,您定義的原始功能會丟失。你不再有一個名字可以用來打電話了。
上線132:
roomCA(key, life, door_open, roomBA, roomDA)
在這裏,您呼叫的功能roomCA。除此之外,此功能會要求玩家指示方向,然後嘗試呼叫相應的房間功能。
我輸入了西,所以我們試圖調用變量roomBA引用的函數(第17行)。但是,哦,它不再是一個功能。它是0.因此,你是錯誤的。
這是怎麼回事,你有很多函數名稱和變量名稱之間的衝突。當然,roomXX是代表遊戲中每個房間的函數。然後,你有狀態變量(現在,它也被命名爲roomXX)。看起來這些變量是用來跟蹤你之前是否進入了一個房間。既然你的函數和狀態變量被命名爲相同的東西,你正在做各種意想不到的事情。
如上帖子中提到,你可以刪除行129和130獲得的代碼運行;但是,您可能需要更好地理解基礎知識。下面是一個開始的地方:
您定義roomBA
和roomDA
作爲函數,然後......你將它們綁定到整數。它是行不通的。
我多麼愚蠢,我會redit – 2012-04-10 22:55:03
刪除線129和130,它會工作,爲伊格納西奧說。
Python中的「通知」通常的功能。該消息意味着你在處理數字(「 int「)就好像它是一個函數(一個」可調用的「),所以Python不知道該怎麼做,所以它停止了。
我現在已經解決了這個問題,對我來說很愚蠢。它工作正常,我可以繼續這個小項目,謝謝。 – 2012-04-10 23:01:56
一個錯誤說。 「'int'對象不可調用。'我無法弄清楚這是什麼意思搜索。
你的意思是通過了解語言的基礎知識和英語來了解這意味着什麼。
錯誤提示'int'
對象不可調用。調用是你對函數(和類似的東西)所做的事情,所以你有一個int,你認爲你有一個函數(或類似的東西)。這是因爲你已經將一個函數名重新設置爲一個int。
在Python,你應該知道現在:
一切都是對象,甚至功能。
在運行時間之前不會檢查類型。
值有類型,而不是變量(名稱,真的)。
所以沒有受到什麼阻礙你的寫作:
function a(): pass
a = 1
第一行創建一個函數對象,並將其綁定到名稱a
。第二行將整數1
綁定到名稱a
。這取代了舊的綁定,所以a
是不再是函數的名稱。
請將相關的代碼放入您的問題的正文中。 – 2012-04-10 22:49:34
您可能還想花一些時間檢修您的設計。對每個房間,移動設備和敵人的每個「彩色描述」進行硬編碼都不能實現良好的代碼重用,會讓你的代碼變得活靈活現,難以閱讀。 – hexparrot 2012-04-10 22:52:28
Python不是您使用的第一種編程語言,是嗎? – 2012-04-10 23:02:21