我尝试使用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))
答案 0 :(得分:1)
random.choice
无法正常工作,因为您正在传递字典,并且它希望可以使用整数索引对它们进行索引。如果键是整数,则可以从字典中随机选择。
d = {'a': 10, 'b': 20}
random.choice(d)
上面的代码将失败,但这将起作用:
d = {1: 10, 0: 20}
random.choice(d)
这不是魔术,它之所以有效,是因为random.choice
中的代码在0
和len(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))