我在生成随机对象方面遇到了问题(在这种情况下,这是一种通过觅食发现的随机草药)。这是函数的代码:
def collectPlants(self):
if self.state == 'normal':
print"%s spends an hour looking for medicinal plants." % self.name
if random.choice([0,1]):
foundHerb = random.choice(herb_dict)
print "You find some %s." % foundHerb
return random.choice(herb_dict)
else: print"%s doesn't find anything useful." % self.name
和dict块:
herb_dict = [
("Aloe Vera", Player().health == Player().health + 2),
("Cannabis", Player().state == 'high'),
("Ergot", Player().state == 'tripping')
]
对于秘密的例子,我们深表歉意。 Herb也是一个有三个参数的类:(自我,名字,效果)。
当调用collectPlants函数时,如何从dict生成随机草药?
答案 0 :(得分:0)
random.choice
是一种方法,因此如果您想要调用它,则需要使用()
而不是[]
。另外,要访问列表中的元素,您需要使用[]
而不是()
。
对于您的情况,将return random.choice[herb_dict("")]
替换为符合您需要的return random.choice(herb_dict)
,它会随机返回herb_dict
中的元素。
但我认为你方法的逻辑存在一些问题。
print "You find some %s." % herb.name
player.hasHerb()
以上两个陈述永远不会被执行。
此外,您可以使用if random.choice([0, 1]):
代替if random.randint(0,1) == 1:
。
答案 1 :(得分:0)
你必须使用如下所示,因为random.choice需要一个序列来选择一个随机值。
random.choice(herb_dict)
使用上面的结果,你会得到一个元组并且可以使用[index]来访问元素,例如访问其中的第一个元素,使用random.choice(herb_dict)[0]