【发布时间】:2020-06-06 16:00:51
【问题描述】:
对不起,如果这是一个非常愚蠢的问题,因为我在 python 方面很糟糕,而且我的大部分知识都包括在 16 岁以后的教育之前教给你的非常有限的东西。基本上,我正在尝试做一个编码项目,为 9 月开课做准备,到目前为止,我已经设法通过使用在线网站和人们的在线论坛问题自学课程来获得成功。但是,我遇到了一些障碍,因为我的代码不断抛出错误。我查看过网站和论坛,但与我相比,它们的情况似乎非常不同,其中一些似乎只是告诉我我所做的是正确的。给出的确切错误是:第 34 行,在 returnBarbarianStats print(self.name,"野蛮人的数据:") NameError: name 'self' 未定义
import random
def getName():
syllables = ['en','da','fu','ka','re','toh','ko','noh','tuk','el','kar']
firstName = (random.choice(syllables))
secondName = (random.choice(syllables))
thirdName = (random.choice(syllables))
global generatedName
generatedName = firstName+'-'+secondName+'-'+thirdName
# Classes-all creatures have names generated the same way and have the same amount of health.
# The way I have selected how each subclass will be randomly chosen is having the code select a random value
# from the list and depending on which is chosen it will give a subclass.
class preset():
def _init_(self, creature, name, health=100):
self.name = generatedName
self.health = 100
getName()
self.name=generatedName
#Gives different attributes to each sub-class
class barbarian(preset):
def _init_(self, name, power=70, specialAttackPower=20, speed=50):
preset._init_(self, creature, name, health=100)
self.power = power
self.specialAttackPower = specialAttackPower
self.speed = speed
self.name = name
def returnBarbarianStats():
print(self.name,"the barbarian's stats:")
print("Health:",self.health)
print("Power damage:",self.power)
print("Special attack power damage:",self.specialAttackPower)
print("Speed:",self.speed)
class elf(preset):
def _init_(self, name, power=30, specialAttackPower=60, speed=10):
preset._init_(self, creature, name, health=100)
self.power = power
self.specialAttackPower = specialAttackPower
self.speed = speed
class wizard(preset):
def _init_(self, name, power=50, specialAttackPower=70, speed=30):
preset._init_(self, creature, name, health=100)
self.power = power
self.specialAttackPower = specialAttackPower
self.speed = speed
class dragon(preset):
def _init_(self, name, power=90, specialAttackPower=40, speed=50):
preset._init_(self, creature, name, health=100)
self.power = power
self.specialAttackPower = specialAttackPower
self.speed = speed
class knight(preset):
def _init_(self, name, power=60, specialAttackPower=10, speed=60):
preset._init_(self, creature, name, health=100)
self.power = power
self.specialAttackPower = specialAttackPower
self.speed = speed
#10 randomly generated characters.
i = 0
army = []
while i < 10:
creatures = ['barbarian','elf','wizard','dragon','knight']
creatureType = (random.choice(creatures))
if creatureType == 'barbarian':
army.append(barbarian())
elif creatureType == 'elf':
army.append(elf())
elif creatureType == 'wizard':
army.append(wizard())
elif creatureType == 'dragon':
army.append(dragon())
elif creatureType == 'knight':
army.append(knight())
i = i + 1
barbarian.returnBarbarianStats()
我刚刚给出了整个代码,因为我不想错过任何重要的细节。
【问题讨论】:
-
嗨,欢迎来到 python。这段代码有很多格式问题,例如我们以 CAPS 开头的类名、var 名称等。我建议使用好的 IDE,例如带有 pylint、sonarlint 的 vscode 等,它会指出代码格式问题
标签: python-3.x nameerror