gpt4 book ai didi

python - 每次调用一个键时,如何从字典中返回一个随机数?

转载 作者:行者123 更新时间:2023-11-28 20:03:44 24 4
gpt4 key购买 nike

我正在尝试制造一种提供随机伤害的武器。我这样做是使用表单中的项目数据库

itemsList = {
1: {"name": "Padded Armor", "armor": 1, "value": 5, "class": "Light"},
2: {"name": "Leather Armor", "armor": 2, "value": 10, "class": "Light"},
....
19: {"name": "Dagger", "damage" : int(random.randrange(1, 4)), "value": 2, "Type": "Dagger"},
20: {"name": "Dagger + 1", "damage" : int(random.randrange(1, 4) + 1), "value": 200, "Type": "Dagger"},
21: {"name": "Dagger + 2", "damage" : int(random.randrange(1, 4) + 2), "value": 750, "Type": "Dagger"},
22: {"name": "Dagger + 3", "damage" : int(random.randrange(1, 4) + 3), "value": 2000, "Type": "Dagger"}
}

每次我尝试调用 "damage" 时,它只会返回相同的结果。我知道这是因为随机数是生成一个然后保存到那个字典键。

每次调用损坏时我将如何生成一个随机数?

最佳答案

我会不厌其烦地在类的 itemsList 实例中制作这些东西。尽管您可能认为这有点矫枉过正,但这样做会给您以后的编程带来很大的灵 active 。它还将使许多代码更易于编写(和阅读),因为您将能够使用点符号而不是通过索引来引用事物,这意味着您不仅可以编写现在使用 itemsList[19].damage 而不是 itemsList[19]["damage"]。您还将对所有其他属性使用相同的语法,例如 itemsList[1].nameitemsList[2].value,并且能够编写条件代码如下:

if hasattr(itemsList[2], 'Class'):
# do something based on itemsList[2].Class

我的意思是:

import random

class Gear(object):
def __init__(self, **kwargs):
kwargs['_damage'] = kwargs.pop('damage', False)
self.__dict__.update(kwargs)

@property
def damage(self):
return int(random.randrange(*self._damage)) if self._damage else 0

itemsList = {
1: Gear(name="Padded Armor", armor=1, value=5, Class="Light"),
2: Gear(name="Leather Armor", armor=2, value=10, Class="Light"),
# ...
19: Gear(name="Dagger", damage=(1, 4), value=2, Type="Dagger"),
20: Gear(name="Dagger + 1", damage=(1, 5), value=200, Type="Dagger"),
21: Gear(name="Dagger + 2", damage=(1, 9), value=750, Type="Dagger"),
22: Gear(name="Dagger + 3", damage=(2, 6), value=2000, Type="Dagger"),
}

在下面的一条评论中回答您的后续问题:

kwargs 是传递给 __init__() 构造方法的所有关键字参数的字典。 (__dict__ 是字典的名称,每个实例都在其中存储其属性。)参见 this section在文档中。

damage 由使用 @property 的类定义装饰器,这是一种实际使它成为“数据描述符”的简单方法。这会设置一些东西,以便每当您引用类实例的 damage 属性时,它都会调用一个函数来检索/确定其当前“值”。查看Descriptor HowTo Guide有关 Python 描述符的更多信息。

关于python - 每次调用一个键时,如何从字典中返回一个随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com