Hinweis: Ich bin nicht auf der Suche nach Ihnen, meinen Code neu zu erstellen, ich suche nach Tipps und Links zu Websites, die mir helfen, diesen Code zu verbessern. Wenn Sie den Code reparieren möchten, werde ich auch Ihre Antwort akzeptieren.Wie behebe ich meinen Code, damit er die Ergebnisse drucken kann, die ich will?
Ich versuche zu verstehen, wie class
funktioniert, aber ich habe eine wirklich harte Zeit dabei. Ich machte eine class
namens Stat
, die alle Statistiken für einen bestimmten Benutzer enthält. Alle Statistiken für den Benutzer sind name, level, totexp and role
. Jeder role
hat 3 stats (es sollte drei aber, mein Code ist durcheinander), health, attack, and defense
. Hier ist der Hauptcode (nicht funktioniert):
class Stat():
def __init__(self, name, level, totexp, role, health, attack, defense):
self.name = Name
self.level = 1
self.totexp = 0
self.role = Role
self.health = health
self.attack = attack
self.defense = defense
self.exp = 0
def choose_name():
while(True):
Name = input("What is your Dicer's name?:\n").title()
if(any(Bad_Words in Name.lower() for Bad_Words in [])):
print("That's an inappropriate name! Try again")
elif(len(Name) < 3):
print("That name is too short! Try again.")
elif(len(Name) > 16):
print("That name is too long! Try again.")
else:
break
def choose_role():
Roles = {
'mage':lambda:Role(100, 40, 10), #(Health, Attack, Defense)
'warrior':lambda:Role(100, 30, 20),
'gunner':lambda:Role(100, 20, 30),
'archer':lambda:Role(100, 10, 40)
}
while(True):
Role = input("What role do you want to be?\nChoices:\n1. Mage\n"
"2. Warrior\n3. Gunner\n4. Archer\n").title()
if(Role.lower() in (Roles)):
return
else:
print("That's not a role! Try again.")
self = choose_name()
self = choose_role()
Nach dem Hauptcode der Results
(wie im Titel) oder das Ergebnis Code sollte die Stats
entsprechend der Reihenfolge der Instanzen print
aus. Hier ist das Ergebnis Code:
print("Here is your Dicer's information:\nDicer's name: {0}\n"
"Level: {1}\nExperience: {2}\nRole: {3}\nRole Stats:\n"
"Health: {4}\nAttack: {5}\nDefense: {6}".format(self.name, self.level,
self.totexp, self.role,
self.health, self.attack,
self.defense))
Wenn ich den Code ausführen bekomme ich einen Fehler:
Traceback (most recent call last):
File "python", line 37, in <module>
AttributeError: 'NoneType' object has no attribute 'name'
Ich glaube, ich habe Ideen, warum dies geschieht, aber ich weiß nicht, wie man es beheben . Können Sie mir helfen, wo ich mit meinem Code anfangen muss und wie ich ihn beheben kann? Hier die Ergebnisse I (in diesem Beispiel der Name = Bob und Role = Gunner) wollte:
Dicer's name: Bob
Level: 1
Experience: 0
Role: Gunner
Role Stats:
Health: 100
Attack: 20
Defense: 30
Ihr Fehler ist auf der Linie 50, aber der Code Sie legen nur 36 Zeilen. Auf jeden Fall in Ihrem Stat beheben beide (Ihre Großschreibung wurde durcheinander gebracht). Sie sollten 'self.name = name' und' self.role = role' verwenden. – Keatinge
@Keatinge Wo gebe ich diese hin? Ich nehme an, du meinst außerhalb der Klasse, aber ich weiß es wirklich nicht. – BradTheBrutalitist
@BradTheBrutalist. Innerhalb der Stat-Klasse haben Sie die Zeile 'self.name = Name' ersetzen Sie sie mit' self.name = name' und ebenfalls für self.role. ** Python ist case sensitive ** – Keatinge