2016-01-02 144 views
0

我試圖在python中打印一個基於烏龜/文本的RPG(基本上它是一個計算機化的d & d dungeonmaster)以打動我的朋友,我的同學和我的老師爲我的計算GCSE和我的代碼似乎沒問題;它畫出了房間,敵人和任何其他的東西很好,有文本輸入打印在Python shell。這就是它說:它一直說:TypeError:append()只需要一個參數(0給出)

File "E:\GCSE's\RPG No.1 Test code..py", line 22, 
in chest contents+=list.append(chosen_loot) 
TypeError: append() takes exactly one argument (0 given) 

但這是代碼段,它是關於:

def chest(): 
    contents=[] 
    chosen_loot=[] 
    for n in range(2): 
     loot=["Chestplate", "Vambraces", "Chausses", "Sabaton", "Zweihänder"] 
     chosen_loot+=random.choice(loot) 
     contents+=list.append(chosen_loot) 

請幫幫忙!我從晚上10點起牀,一直在做這件事情!

+2

你的意思是'contents.append(chosen_loot)'? –

+0

哦,對了,嗯,我現在有點尷尬,尤其是因爲那個工作... –

+0

當文檔說* list *'.append()',這意味着你調用'append()'列表對象。 + =和附加有(或多或少)相同的效果,使用一個或另一個,而不是兩個(通常追加是首選)。 – cdarke

回答

1

您的語法是完全錯誤的。首先,chosen_loot+=random.choice(loot)增加了一個list和一個字符串,除了擴展賦值(+=)之外,該字符串通常不起作用,該擴展賦值將list擴展爲包含每個字符作爲單獨的項目。

>>> a = [1,2] 
>>> a+= 'abc' 
>>> a 
[1, 2, 'a', 'b', 'c'] 

該行應該是chosen_loot = random.choice(loot)。你甚至不需要兩個list,所以我不知道那裏發生了什麼。

接下來,contents+=list.append(chosen_loot)是不正確的。首先,你在做list.append,如果你正確地調用它,可以工作,參考你感興趣的list(在這種情況下爲contents),但通常你想要做一些類似contents.append(chosen_loot)的事情。接下來,您將與+=連接在一起。你有幾個可能有用的代碼,但你不能把它們拼湊在一起,並期望它們工作。該行應該是contents.append(chosen_loot)

接下來,您試圖從list中獲取兩個隨機項。要做到這一點的方法是random.sample

contents = random.sample(loot, 2) 

最後,即使這樣也不會做任何事情,因爲它在函數結束時都會被拋棄。你需要退貨:

def chest(): 
    return random.sample(["Chestplate", 
          "Vambraces", 
          "Chausses", 
          "Sabaton", 
          "Zweihänder"], 2) 

這將產生兩個隨機項目。

+0

如果我說實話,隨機功能,我幾乎不知道我在做什麼。我的GCSE計算課程中甚至沒有提到過,而且我們剛剛完成了一個長期項目,其中一半實際上是獨立編碼的3個基本遊戲,遠不及我所嘗試的,另一半是班級只是偷走了其他人的工作,並使它看起來像他們自己的。所以對於一個做GCSE考試的孩子而言,我只是在昨天發現了隨機模塊,如果不是我的隊友,我會不喜歡那個班級 –

相關問題