Warum funktioniert die if Anweisung nicht richtig?
Hi, ich versuche gerade mit if Anweisungen ein Programm zu schreiben, aber es wird bei allem was ich eingebe immer nur das erste ausgeführt. Ich habe mal ein Beispiel geschrieben, bei dem auch bei einer anderen Eingabe immer nur "Vorgang wird wiederholt" ausgegeben wird..
example = input("""Falls du den Vorgang wiederholen möchtest, gib bitte "y" ein. Falls nicht gib "n" ein: """)
if example == "Y" or "y":
print("Vorgang wird wiederholt..")
elif example == "N" or "n":
print("Vorgang wird nicht wiederholt")
else:
print("Ungültige Eingabe")
4 Antworten
Das OR ist eine logische Verknüpfung, du benutzt es "umgangssprachlich".
Was du programmiert hast:
WENN example gleich "Y" ist ODER wenn "y" ungleich Null ist.
Was du wohl programmieren wolltest:
WENN example gleich "Y" ist ODER wenn example gleich "y" ist.
Das problem bei deinem Programm ist, dass es bei der 2. Abfrage geschaut wird, ob "y" == "y" ist, was immer True ist. Deshalb kommt da immer ""Vorgang wird wiederholt.."" raus. Um dies zu änderen muss man nochmal example == machen
Also:
example = input(
"""Falls du den Vorgang wiederholen möchtest, gib bitte "y" ein. Falls nicht gib "n" ein: """)
if example == "Y" or example == "y":
print("Vorgang wird wiederholt..")
elif example == "N" or example == "n":
print("Vorgang wird nicht wiederholt")
else:
print("Ungültige Eingabe")
Ein kleiner Tipp. In Python gibt es eine Funktion namens .lower() oder .upper() und das ermöglicht es, die Eingabe automatisch klein-/ großzuschreiben.
Wenn man das machen möchte, kann man es so implementieren:
example = input(
"""Falls du den Vorgang wiederholen möchtest, gib bitte "y" ein. Falls nicht gib "n" ein: """).lower()
if example == "y":
print("Vorgang wird wiederholt..")
elif example == "n":
print("Vorgang wird nicht wiederholt")
else:
print("Ungültige Eingabe")
Vielleicht sollte da stehen:
("Y" or "y")
Nachtrag:
In vielen Programmiersprachen ist ein WENN nach der ersten Prüfung beendet, ein ODER danach wird NACH dem WENN behandelt. Will man das ODER in die Prüfung des WENN hineinziehen, so muss die gesamte ODER-Prüfung in Klammern.
In Deinem Fall wird das ODER wahrscheinlich NACH dem WENN geprüft, das kann nur schiefgehen.
Ist das gleiche wie in der Mathematik: Klammern gehen vor.
Definitiv nicht: Die Klammern bewirken, dass geprüft wird, ob Y oder y eingegeben wurde. Trifft einer der beiden Fälle zu, ist es true, ansonsten false (ein N ode n ergäbe dann false). Das IF überprüft dann, ob es true oder false ist.
Nein. So funktioniert Python nicht.
Probiers doch einfach aus. Bei deinem Fall würde "y" nicht gematched werden
Or erwartet einen neuen vergleich.
Also nochmal input == "y"
Hmm, okay. Wie kriege ich es dann hin, dass es egal ist, ob y oder Y eingegeben wird?
example = input("""Falls du den Vorgang wiederholen möchtest, gib bitte "y" ein. Falls nicht gib "n" ein: """)
if example == "Y" or example == "y":
print("Vorgang wird wiederholt..")
elif example == "N" or example == "n":
print("Vorgang wird nicht wiederholt")
else:
print("Ungültige Eingabe")
Danke, eigentlich sehr logisch, aber irgendwie bin ich darauf nicht gekommen.😅
Nein.
Das würde den logischen Wert TRUE geben. Immer.
Und dann würde überprüft, ob "example" gleich TRUE ist.