Warum funktioniert dieser Python-Code nicht?
Ich habe gestern angefangen, mir selber Python beizubringen und sitze gerade an meinem zweiten Programm.
Der Code ist eigentlich ganz simpel. Man schreibt, welchen Wert man wissen möchte (Strom/Spannung/Widerstand) und gibt dann die anderen beiden Werte ein. Dann rechnet das Programm den gesuchten Wert aus (U=R*I, I=U/R, R=U/I).
Aber egal, welchen Wert ich eingebe: Es wird immer der Widerstand ausgerechnet.
Kann jemand helfen?
I = 0
U = 0
R = 0
Wert = 0
eingabe = input("Welchen Wert suchst du? ")
if eingabe == "Widerstand" or "widerstand":
Wert = 1
print(Wert)
U = int(input("Wie hoch ist die Spannung in Volt? "))
I = int(input("Wie viel Ampere fließen? "))
R = U // I
print("Der Widerstand beträgt ", R, "Ohm!")
if eingabe == "Spannung" or "spannung":
Wert = 2
print(Wert)
I = int(input("Wie viel Ampere fließen? "))
R = int(input("Wie hoch ist der Widerstand in Ohm? "))
U = R * I
print("Die Spannung beträgt ", U, "Volt!")
if eingabe == "Strom" or "strom":
Wert = 3
print(Wert)
U = int(input("Wie hoch ist die Spannung in Volt? "))
R = int(input("Wie hoch ist der Widerstand in Ohm? "))
I = float(U) / float(R)
print("Es fließt ein Strom von", I, "Ampere!")
else:
print("Fehler:", eingabe, "kann nicht berechnet werden!")
Das kommt raus wenn ich das Programm starte und Strom errechnet haben will:
Welchen Wert suchst du? Strom
1
Wie hoch ist die Spannung in Volt? 20
Wie viel Ampere fließen? 5
Der Widerstand beträgt 4 Ohm!
2
Wie viel Ampere fließen?
3 Antworten
mal grundsätzlich sollte das nie gehen ausser python wäre was ganz anderes
eingabe == "Strom" or "strom"
eingabe == "Strom" => wahr oder falsch
OR
"strom" => größer 0 => immer wahr ?
deswegen wird wohl einmal alles durchgegangen , weil immer bei jedem WAHR rauskommt
wenn 2 booleans bauen
eingabe == "Strom" OR eingabe == "strom"
if eingabe == "Widerstand" or "widerstand":
Diese Bedingung wird immer erfüllt. Es wird hier nämlich nicht geprüft ob eingabe gleich "Widerstand" oder gleich "widerstand" ist. Du verbindest zwei boolsche Ausdrücke mit dem OR. Davon prüft der eine tatsächlich ob eingabe == "Widerstand" und der andere wird immer zu True evaluiert.
if eingabe.lower() == "widerstand":
oder
if eingabe in ["Widerstand", "widerstand"]:
oder
if eingabe == "Widerstand" or eingabe == "widerstand":
Für den Anfang:
if eingabe == "Widerstand" or eingabe=="widerstand":
einfacher:
if eingabe.lower() == "widerstand":
Zur Erklärung, was Du falsch machst:
>>> bool("")
False
>>> bool("asdads")
True