IndentationError

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Notgod
User
Beiträge: 14
Registriert: Mittwoch 15. Juli 2020, 08:15

Hallo,

ich habve hier ein stück code wenn ich diesen ausführe erhalte ich immer ein Error genaus sagt die COnsole :C:\Users\konst>C:\Users\konst\.idlerc\Main2.py
Traceback (most recent call last):
File "C:\Users\konst\.idlerc\Main2.py", line 2, in <module>
import Sodoku
File "C:\Users\konst\.idlerc\Sodoku.py", line 10
def setzahlen(self, neuzahlen):
^
IndentationError: unindent does not match any outer indentation level

ich weis nicht wie dieser fehler zustande kommt der code :

Code: Alles auswählen

class Feld:

	def __init__(self, feld, zahlen):
		self.feld = feld
		self.zahlen = zahlen

	def getzahlen(self):
		return zahlen

    def setzahlen(self, neuzahlen):
        if isinstance(zahlen, types.ListType):
            zahlen = neuzahlen
        else:
            pass

    def getfeld(self):
		return feld
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Man rückt pro Ebene exakt 4 Leerzeichen ein. In deinem Code sind die Einrückungen inkonsistent und das führt zu dem Fehler. Wenn du genau hinschaust, siehst du, dass die beiden unteren 'def'-Zeilen von den oberen abweichen.
Notgod
User
Beiträge: 14
Registriert: Mittwoch 15. Juli 2020, 08:15

ja aber in Nottpad++ sieht das gleich aus
Benutzeravatar
ThomasL
User
Beiträge: 1379
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Du vermischt Tabulatoren und Leerzeichen in deinem Code.
Und da fehlen etliche self.
Über die Sinnhaftigkeit der Getter und Setter Funktionen lässt sich streiten. Das ist Java-Style und unpythonisch.
Genauso wie der Typcheck in setzahlen.

Code: Alles auswählen

class Feld:

    def __init__(self, feld, zahlen):
        self.feld = feld
        self.zahlen = zahlen

    def getzahlen(self):
        return self.zahlen

    def setzahlen(self, neuzahlen):
        if isinstance(zahlen, types.ListType):
            self.zahlen = neuzahlen
        else:
            pass
            
    def getfeld(self):
        return self.feld
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
__blackjack__
User
Beiträge: 14054
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Zumal es `types.ListType` auch überhaupt gar nicht gibt. Womit letztlich das hier bleibt:

Code: Alles auswählen

class Feld:
    def __init__(self, feld, zahlen):
        self.feld = feld
        self.zahlen = zahlen
Das eine Objekt ein Attribut hat das wie der Typ heisst ist zumindest mal komisch, denn das klingt irgendwie so als wenn der Bestandteil von einem `Feld` wieder ein `Feld` wäre.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Ein Setzer der beim "richtigen" Typ etwas macht, sonst aber stillschweigend nichts macht, ist ein riesiger Quell schwer zu findender Fehler. Wenn im else-Block nur pass steht, kann man ihn auch gleich ganz weglassen.
Antworten