-1

我在生成随机对象时遇到问题(仍然),在这种情况下是通过觅食发现的随机草药。这是该函数的代码:

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 也是一个具有三个参数的类:(self, name, effect)。

调用 collectPlants 函数时,如何从字典中生成随机草本植物?

4

2 回答 2

0

random.choice是一种方法,所以如果你想调用它,你需要使用()而不是[]. 另外要访问列表中的元素,您需要使用[]not ()

对于您的情况,将 替换为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:.

于 2013-07-19T04:37:51.480 回答
0

你必须像下面这样使用,因为 random.choice 需要一个序列来选择一个随机值。

random.choice(herb_dict)

有了上面的结果,你会得到一个元组,并且可以使用 [index] 访问元素,例如访问其中的第一个元素,使用 random.choice(herb_dict)[0]

于 2013-07-19T04:40:53.363 回答