存储随机生成的整数的值

时间:2014-06-01 09:19:49

标签: python

我一直在撞墙,这让我无法摆弄游戏。

class Damage:
    def shortsword():
        shortsword=randint(1,6)+1
        shortsword=int(shortsword)
        return shortsword

我一直希望这个号码作为打印信息的一部分弹出,然后使用相同的号码作为另一个功能的一部分来帮助减去目标上的健康状况。虽然每次我抓住它,它总是会改变。

2 个答案:

答案 0 :(得分:2)

将返回值保存在变量中。

ret = self.shortsword() 
print ret
new_func(ret)

此外,您不需要将shortsword转换为int,因为randomint会返回一个整数并向其添加1(整数)返回整数。

def shortsword():
    return randint(2, 7)

正如jonrsharpe在评论中所提到的,random.randint(1, 6) + 1给出了与random.randint(2, 7)相同的结果。

答案 1 :(得分:0)

有一个类没有使用任何类/实例属性的方法,这似乎很奇怪。以下是一些更好地使用Python功能的其他选项:

1。使shortsword成为一个独立的功能:

def shortsword():
    return randint(2, 7)

damage = shortsword()

2。使Damage成为更有用的类,shortsword成为该类的实例:

class Damage:

    def __init__(self, modifier=0, die_sides=6):
        self.modifier = modifier
        self.die_sides = die_sides

    def damage(self):
        return randint(1, self.die_sides) + self.modifier

shortsword = Damage(1)

damage = shortsword.damage()

3。你可以在字典中查找@classmethod中的各种武器:

class Damage:

    WEAPONS = {'shortsword': (2, 7)}

    @classmethod
    def damage(cls, weapon):
        return randint(*cls.WEAPONS[weapon])

damage = Damage.damage('shortsword')

4。最后,如果您真的想将Damage用作组织目的,shortsword应该是@staticmethod,因为它不是&{ #39; t使用任何类/实例属性:

class Damage:

    @staticmethod
    def shortsword():
        return randint(2, 7)

damage = Damage.shortsword()