Python NameError an nur einer Stelle bei mehrmals vorkommendem Code


tom23

Mitglied
Hallo zusammen ich Programmie aktuell ein Python Blackjack mit Hilfe von tutorials(Da ich Python gerade erst Lerne) für die Schule nun wird mir Aktuell folgende Meldung in der Konsole ausgegeben wenn ich versuche meinen Code auszuführen :
Traceback (most recent call last):
File "E:\Blackjack.py", line 24, in <module>
class Hand:
File "E:\Blackjack.py", line 35, in Hand
for card in self.cards:
NameError: name 'self' is not defined

Hier ist der dazu gehörige Code :
Python:
class Hand: #Zeile 24
    def __init__(self,dealer=False):
        self.dealer = dealer
        self.cards = []
        self.value = 0
    def add_card(self, card):
     self.cards.append(card)

    def calculate_value(self):
     self.value = 0
    has_ace = False
    for card in self.cards:
        if card.value.isnumeric():
            self.value += int (card.value) #Zeile 37
Beide Stellen Kommen nahezu identsich erneut im Code vor und ich Verstehe nicht wie ich denn Fehler behebe.
Für Hilfe wäre ich Dankbar.
 

zerix

Hausmeister
Moderator
Hallo,

kann es sein, dass die Einrückungen nicht passen?
Im Code hier sind die meisten Einrückungen falsch und das sollte es nicht, wenn du es direkt aus dem Editor kopiert hast.

Bei Python bilden die Einrückungen die Code-Blöcke, deshalb gibt es keine/kaum Klammern.
Wenn du dir hier die Methode calculate_value anschaust, ist nicht alles passend eingerückt und ab Zeile mit has_ace gehört nichts mehr zu dieser Methode.

Viele Grüße
 

tom23

Mitglied
Danke für die Hilfe für jemanden der Python gerade erst lernt ist es leicht verwirrend wenn hinter den meisten Fehlern eine problem in der Einrückung steckt .
 

zerix

Hausmeister
Moderator
Versuche dir einfach direkt die Einrückung anzugewöhnen. Jeder Block wird eingerückt. So sollte man es aufgrund der Lesbarkeit in jeder Sprache machen, aber Python ist es sogar ein Muss.
 

ikosaeder

Teekannen-Agnostiker
Dafür musst du nicht darauf achten, deine Klammern in der richtigen Reihenfolge zu schließen. Hat alles Vor und Nachteile.
 

Neue Beiträge