从数组中获得随机选择

时间:2018-12-14 21:10:55

标签: python-3.x

我尝试使用random.choice命令,但似乎不起作用。 狼已经被分配到暴民

class Wolf(Character):
    def __init__(self):
        super().__init__(name="wolf",hp=7,atk=6,df=4,inventory={},spells= 
{"bite": randint(3,6)},exp=8)

c = random.choice(mob.spells)            
spower = mob.spells[c]          
ad = mob.atk / hero.df          
damage = ad * spower          
damage = int(round(damage))

1 个答案:

答案 0 :(得分:1)

random.choice无法正常工作,因为您正在传递字典,并且它希望可以使用整数索引对它们进行索引。如果键是整数,则可以从字典中随机选择。

d = {'a': 10, 'b': 20}
random.choice(d)

上面的代码将失败,但这将起作用:

d = {1: 10, 0: 20}
random.choice(d)

这不是魔术,它之所以有效,是因为random.choice中的代码在0len(obj)之间选择了一个随机整数,并在该索引处返回对象。以下代码将永远无法使用:

d = {-1: 10, 2: 20}
random.choice(d)

这有时会起作用:

d = {'a': 10, 0: 20}
random.choice(d)

在字典中找到随机索引没有任何意义。

从字典中获取随机密钥,请执行以下操作:

d = {'a': 10, -1: 20, 90: -90}
random_key = random.choice(list(d))

在您的情况下,代码将为:

c = random.choice(list(mob.spells))