Wieso gibt Python das Falsche aus?
Hallo,
mir ist beim Coden etwas in Python aufgefallen... Hier ist mein Python Code:
a = 0
if a == 0:
print(0, 1)
a = True
elif a == False:
print(False, 1)
a = True
else:
print(True, 1)
a = False
if a == 0:
print(0, 2)
a = True
elif a == False:
print(False, 2)
a = True
else:
print(True, 2)
a = False
if a == 0:
print(0, 3)
a = True
elif a == False:
print(False, 3)
a = True
else:
print(True, 3)
a = False
Hier ist die Ausgabe:
0 1
True 2
0 3
Meines Wissens nach sollte aber Folgendes ausgegeben werden:
0 1
True 2
False 3
Bitte erklärt mir das...
Danke im Voraus, Alex
3 Antworten
Python gibt das richtige aus, denn
0 == False # evaluiert zu True
Um das zu erreichen, was Du willst, müsstest Du etwas machen wie:
if a == 0 and type(a) == type(0):
Das würde nur zu True evaluieren, wenn a gleich der Null ist und der Typ der gleiche ist.
Danke euch... Ich habe es grad eben mit 1 versucht und realisiert, dass True == 1 auch stimmt, mit 2 hat es dann geklappt...
Hellöchen,
False == 0 ergibt True, du könntest zum Beispiel mit dem Type Operator checken, ob auch eine Übereinstimmung des Typs vorliegt.
Das funktioniert:
print(a == False and type(a) == type(False))
Grüße
War mir echt eine Erleuchtung, vorallem weil ich es gerade eben mit 1 probiert habe und dann herausfand, dass 1 == True auch stimmt... Mit 2 hat es dann funktioniert.
False in Integer umgerechnet ist 0.
Aber Du merkst, wenn Du sowas in Programmen machst, sind die schwer zu lesen. Also entweder als Integer oder als Boolean verwenden, aber nicht mischen.
Ich habe es danach mit 1 versucht und dann hat es immernoch nicht geklappt... Dann habe ich realisiert, dass True in Integer umgewandelt 1 ist... Als ich es mit 2 probiert habe, hat es geklappt, danke!