【问题标题】:It keeps saying: TypeError: append() takes exactly one argument (0 given)它一直在说:TypeError:append() 只接受一个参数(给定 0)
【发布时间】:2016-01-02 07:15:02
【问题描述】:

我正在尝试用 python 制作一个基于海龟/文本的 RPG(基本上它是一个计算机化的 d&d 地牢大师),以给我的朋友、我的同学和我的计算 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:00 起就一直在做这件事!

【问题讨论】:

  • 你的意思是contents.append(chosen_loot)
  • 哦,对了,好吧,我现在有点尴尬,尤其是因为这行得通....
  • 当文档说 *list*.append() 时,这意味着您在列表对象上调用 append()。 += 和 append 具有(或多或少)相同的效果,使用一个或另一个,而不是两者(通常 append 是首选)。

标签: python


【解决方案1】:

您的语法完全错误。首先,chosen_loot+=random.choice(loot) 添加了一个 list 和一个字符串,除了使用扩展赋值 (+=) 外,它通常不起作用,它扩展了 list 以将每个字符作为单独的项目包含在内。

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

那行应该是chosen_loot = random.choice(loot)。你甚至不需要两个lists,所以我不知道那里发生了什么。

接下来,contents+=list.append(chosen_loot) 根本不对。首先,您正在执行list.append,如果您正确调用它,它可能会起作用,并引用您感兴趣的list(在这种情况下为contents),但通常您想做类似@ 987654332@。接下来,您将在此之上连接+=。你有几个可能有用的代码,但你不能只是把它们混在一起并期望它们工作。那行应该只是contents.append(chosen_loot)

接下来,您尝试从list 中获取两个随机项目。方法是使用random.sample

contents = random.sample(loot, 2)

最后,即使这样也无济于事,因为当函数结束时,这一切都被丢弃了。你需要返回一些东西:

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

这将产生两个随机项目。

【讨论】:

  • 老实说,使用随机函数,我几乎不知道自己在做什么。它甚至还没有在我的 GCSE 计算课程中被提及,我们刚刚完成了一个为期一学期的项目,其中我们中的一半人实际上独立编写了 3 个基本游戏,远不及我正在尝试的,另一半班级只是偷了别人的工作,让它看起来像他们自己的。所以对于一个做他的 GCSE 并牢记在心的孩子,我昨天才发现随机模块,如果不是因为我的伙伴,我会不及格这门课
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2023-03-23
  • 2017-03-27
  • 1970-01-01
  • 2019-06-24
相关资源
最近更新 更多