IndentationError: expected an indented block

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
HadesAlmighty
User
Beiträge: 1
Registriert: Freitag 19. Februar 2021, 11:47

Hallo ^^/
ich hab vor kurzem angefangen Programmieren zu lernen und wollte testweise mal einen Taschenrechner programmieren. Am Ende vom Code tritt aber ein Fehler auf:

else: (jein == "nein", "Nein")
^
IndentationError: expected an indented block

Ich versteh nicht so richtig was daran falsch ist. Ich habe schon versucht es anders einzurücken, aber der Fehler bleibt oder wird sogar schlimmer.
Der letzte Abschnitt vom Code sieht so aus :

jein = input("Willst du weiter rechnen? (Ja/Nein)")

jein = str(jein)

if (jein == "ja", "Ja"):

else: (jein == "nein", "Nein")

Kann mir da einer helfen?
Benutzeravatar
__blackjack__
User
Beiträge: 14054
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@HadesAlmighty: Einrückung hat eine Bedeutung in Python. Womit lernst Du denn? Das sollte dort erklärt werden.

Um Bedingungen gehören keine Klammern, und das scheint auch alles eher geraten zu sein, denn es ist falsch. Die Bedingung vom ``if`` ist *immer* wahr, weil Du da ein Tupel mit zwei Elementen hingeschrieben hast. Das erste Element ist das Ergebnis des Vergleichs ``jein == "ja"`` und das zweite Element ist die Zeichenkette "Ja":

Code: Alles auswählen

In [209]: jein = "eingabe"                                                      

In [210]: (jein == "ja", "Ja")                                                  
Out[210]: (False, 'Ja')
Ich vermute mal Du dachtest `jein` wird so mit "ja" und "Ja" verglichen. Aber wie kommst Du auf diese Idee? Man kann sich nicht einfach Bedeutungen für Syntax ausdenken und hoffen, dass das dann schon das bedeuten wird was man denkt was praktisch wäre. Programmieren durch raten funktioniert nicht.

`input()` liefert übrigens bereits eine Zeichenkette. Die mit `str()` in eine Zeichenkette umzuwandeln ist sinnfrei, da kommt nur die Zeichenkette wieder heraus, die man sowieso schon hatte.

Edit: In Deinem Code fehlt der Block mit Code der ausgeführt werden soll falls die ``if``-Bedingung zutrifft. Da *muss* etwas stehen.

Das Tupel welches im ``else``-Zweig steht macht keinen Sinn. ``else`` zu einem ``if`` oder ``elif`` wird ausgeführt wenn die Bedingung beim Zweig davor nicht zutraf. ``else`` hat/braucht dann keine Bedingung mehr.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten