Python Programmierfehler?
Wenn ich das Programm starte kommt die Fehlermeldung das Ergebnis2 nicht definiert ist, erkennt jemand meinen Fehler?
Der Code:
while 1:
Zahl1 = input("erste Zahl: ")
Zahl2 = input("zweite Zahl: ")
Ergebnis = input("Addieren? (1), Subtrahieren? (2), Multiplizieren? (3), Dividieren? (4)")
if (Ergebnis == 1):
Ergebnis2 = Zahl1+Zahl2
if (Ergebnis == 2):
Ergebnis2 = Zahl1-Zahl2
if (Ergebnis == 3):
Ergebnis2 = Zahl1*Zahl2
if (Ergebnis == 4):
Ergebnis2 = Zahl1/Zahl2
print(Ergebnis2)
3 Antworten
Du versuchst einen String (von input) mit einem Integer (z.B. 1) zu vergleichen, daher wird keines deiner ifs TRUE und Ergebnis2 wird nie definiert, also wirft print(Ergebnis2) einen Fehler.
Das könntest du beheben indem du deine if entsprechend änderst:
if (Ergebnis == "1"):
oder
if (int(Ergebnis) == 1):
P.s. Deine Rechnungen werden, aufgrund desselben Problems, auch nicht klappen.
Kleine Ergänzung:
Als Alternative kannst du dein input auch direkt in ein int umwandeln:
Ergebnis = int(input("Addieren? usw.))
Was passiert, wenn du Variablennamen ohne Ziffern verwendest?
Vorschlag:
- Ergebnis -> Modus
- Ergebnis2 -> Ergebnis
Keiner deiner if Anweisungen trifft zu, da Ergebnis vom Typ str ist, wenn input() ausgeführt wurde. Daher wird nie eine Ergebnis2 = ... Anweisung ausgeführt und die Variable ist noch undefiniert, wenn das print() Statement ausgeführt wird.
Auch wenn die if Verzweigung funktionieren würde (Tip: if Ergebnis == '1' z.b.), werden auch Zahl1 und Zahl2 wegen der input() Anweisung vom Typ str sein und damit kann die Rechenoperation nicht ausgeführt werden.
Du müsstest dir mal anschauen, wie du bei str Variablen an den numerischen Inhalt, also als echte Zahl, heran kommst.