使方法每次被调用时都生成一个新的数字?

2024-10-01 07:51:33 发布

您现在位置:Python中文网/ 问答频道 /正文

目标:我正在努力做到这一点自毁它生成一个介于1和参数“damage”之间的随机数。然而,这个随机数只是第一次被选取,然后在整个代码中使用。我当前的代码如下所示:

import random
class PC(object): 
  def __init__(self, health, damage):
    self.health = health 
    self.damage = random.randint(1,damage)

Player_character = PC(10,5) 
Spider = PC(2,3)
print(Player_character.health)

def fightspider(spiderturn):
  rounds = 0
  while spiderturn == 1 and rounds < 2:
    Spider.damage
    Player_character.health = Player_character.health - Spider.damage
    rounds += 1
    print(Spider.damage)
print(Player_character.health)

def fightplayer(playerturn):
  if playerturn == 1:
    Spider.damage
fightspider(1)

当我说卡盘损坏在while循环中,我希望它选择一个新的随机数,目前它只使用第一个随机数,没有选择任何新的随机数。 我不知道为什么会发生这种情况或如何解决,我可以得到任何线索去与这个? 这是我第一次使用类,所以我对它们到底是如何工作的只有一半的把握! 谢谢你的帮助。你知道吗


Tags: 代码selfdefrandomspiderplayerprintpc
2条回答

您已将此问题标记为“python-3.x”,因此我假定您使用的是3.x

您以两种不同的方式使用Spider.damage

  1. 您将它用作返回存储在damage属性中的当前值的表达式。你知道吗
  2. 您还希望它充当一个函数调用,以某种方式调用random.randint(),并为damage属性重新分配一个新的随机数。你知道吗

第一次使用是可以的。第二个不行。你知道吗

我建议您编写一个名为set_damage()的方法,它将在内部调用 random.randint(),并更新damage属性。你知道吗

损坏只能在类random.randint(1, damage)(在__init__)的初始化器中调用。我建议您只初始化初始化程序中的max_damage,然后创建一个新函数来生成损坏,例如:

import random

class PC(object): 
    def __init__(self, health, damage):
        self.health = health 
        self.max_damage = max_damage

    def get_damage():
         return random.randint(1, self.max_damage)

然后你可以用Spider.get_damage()代替Spider.damage来获得每次产生的伤害。希望这是有意义的,祝你的编程工作好运!你知道吗

相关问题 更多 >