我正在尝试在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点起就开始做这件事了!
答案 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)
这将产生两个随机项目。