每当我运行这个程序(不是一个严肃的程序,只是为了了解事情的想法)时,monster (monster[1])
造成的损害只是一遍又一遍地重复相同的数字。它随机化一次然后重复它。我明白发生了什么,但我不明白为什么会这样。这是代码(对不起,我不知道我是否把我的问题说清楚了......在我的脑海中是有道理的,哈哈)
编辑 - 我希望 Monster[1] 函数每次都随机化,但我不知道如何在不编写更多代码的情况下做到这一点(即 damage=random.randint(5, 15)
health-=damage
)。如果我这样写,它工作正常。但如果我有一系列 10 个不同的怪物,我不想特别写。如果有意义的话,我想调用每个怪物并让它自己运行。
编辑#2:是否有可能在列表中创建一个元组,因为元组是不可变的(即 monster=[100, (random.randint(5, 15)), random.randint(15, 30)]
这段代码不起作用我已经尝试过了,但只是想知道是否有可能。
import random
monster = [100, random.randint(5, 15), random.randint(15, 30)]
health = 200
a = 1
print "you run into a monster"
while a == 1:
if monster[0] <= 0:
print "monster is dead"
print "you get, " + str(monster[1]) + " exp"
a += 1
elif monster[0] >= 0:
att = random.randint(5, 15)
monster[0] -= att
health -= monster[1]
print ("you attack the monster and do, " + str(att) + " damage"
" the monster does," + str(monster[1]) + " damage to you")
print "you have, " + str(health) + " health left"
print "monster has, " + str(monster[0]) + " health left"
最佳答案
monster[1]
在代码的第二行被分配一个随机整数。然后将其作为整数存储在列表 monster
中。该整数将保持不变。您必须重新运行 random.randint(5, 15)
调用才能获得新的“损坏”数字或新的 exp 量。
虽然我认为这可能超出了您在这里工作的范围,但您可能希望研究创建一个 class
怪物而不是使用数组,然后使用一种方法在每次攻击时生成这些随机整数。
这是一个示例怪物类,可以让您了解它是如何工作的。
class monster():
def __init__(self,health):
self.health = health
def attack(self):
return random.randint(5,15)
然后你可以创建一个新的怪物,如下所示。
monster = monster(100)
看看它造成了多少伤害,如下所示。
monsterDamage = monster.attack()
health -= monsterDamage
print "The monster does " + str(monsterDamage) + " damage to you."
并降低怪物的健康如下。
att = random.randint(5,15)
monster.health -= att
关于python - random.randint 函数没有按照我希望的方式工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18808729/