关于竞技场的一个基本问题,我写了一个关于竞技场的基本问题。 这是我在运行程序时遇到问题的代码块
class Enemy:
def __init__(self,player,weapons,armor):
self.name = "Bad Guy"
self.health = 100
self.attackPower = (player.attack + randint(-5,5))
self.defensePower = (player.defense + randint(-5,5))
self.weapon = player.weapon
self.armor = player.armor
def name_generator(self):
import random
element = ["Thunder","Lightning","Wind","Fire", "Stone"]
tool = ["Hammer","Drill","Cutter","Knife", "Saw"]
randomNumber1 = random.randrange(0,len(element))
randomNumber2 = random.randrange(0,len(tool))
self.randomname = element[randomNumber1] + " " + tool[randomNumber2]
return self.randomname
哈哈,暂时忽略名字生成器,这是一个想法,我以后会想办法解决的。目前我遇到的问题是,当我通过IDLE运行程序时,我得到以下错误:
^{pr2}$对于程序错误,任何帮助都将不胜感激,因为我已经做了研究,并试图找到答案,但所有其他案件的'str'错误涉及名单。 提前谢谢你!在
如何阅读和理解错误消息,以便您能够帮助自己:
首先,我们读到:
第一行说明问题发生时我们所在的文件和行。第二行是导致问题的行的副本,因此我们可以查看它,而不必返回并查找它。最后一行是对实际问题的描述。在
因此,下一步是了解问题所在。
AttributeError
意味着我们试图从没有属性的东西中获取属性。剩下的部分说明我们试图从什么类型的东西(a'str' object
,即一个字符串),以及我们试图得到什么(一个名为attack
)的属性。在下一步我们来看看有问题的那条线。我们从何处尝试从某物中获取名为的
attack
的属性?显然,这是我们写的player.attack
。因此,我们现在知道发生了什么:我们的代码试图从player
变量中获取attack
属性,但是player
引用了一个字符串,而字符串没有attack
属性。(显然,^{attack
是什么?这没有任何意义。)这是怎么发生的?好吧,如果我们编写了试图读取
attack
属性的代码,显然我们早就预料到了。我们不希望在字符串上有这样的属性,所以错误是我们在预期其他属性时,将一个字符串放入player
。在值如何进入
player
?它是函数的参数。因此,我们错误地调用了,我们找到了调用它的代码行(提示:查看堆栈跟踪中的前一个条目),并修复了周围的代码。我们应该通过什么?显然,有些东西确实有attack
。你上过什么球员课吗?那么您应该传递该实例,而不是(玩家的?)名字什么的。在显然,您使用player name(string)而不是player对象(参数为'attack'、'defence'等)调用此类的构造函数(在这里实例化它)。在
相关问题 更多 >
编程相关推荐