它一直说:TypeError:append()只取一个参数(给定0)

时间:2016-01-02 07:15:02

标签: python

我正在尝试在python中创建一个基于海龟/文本的RPG(基本上是一个计算机化的d& d dungeonmaster)来给我的朋友,我的同学和我的老师打动我的计算GCSE,我的代码似乎没问题;它抽出房间,敌人和其他任何东西都很好,文本输入打印在python shell中。这就是它所说的:

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点起就开始做这件事了!

1 个答案:

答案 0 :(得分: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)

这将产生两个随机项目。