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?
IndentationError: expected an indented block
- __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":
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.
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')
`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