Warum funktioniert die if Anweisung nicht richtig?

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")
Woher ich das weiß:eigene Erfahrung

Vielleicht sollte da stehen:

("Y" or "y")
Kwalliteht  21.08.2022, 00:33

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.

0
gfntom  21.08.2022, 00:33

Nein.

Das würde den logischen Wert TRUE geben. Immer.

Und dann würde überprüft, ob "example" gleich TRUE ist.

0
Kwalliteht  21.08.2022, 00:36
@gfntom

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.

0
zooper  21.08.2022, 01:22
@Kwalliteht

Nein. So funktioniert Python nicht.

Probiers doch einfach aus. Bei deinem Fall würde "y" nicht gematched werden

0

Or erwartet einen neuen vergleich.

Also nochmal input == "y"

Woher ich das weiß:Berufserfahrung – Softwareentwickler
lukasxlama 
Fragesteller
 21.08.2022, 00:29

Hmm, okay. Wie kriege ich es dann hin, dass es egal ist, ob y oder Y eingegeben wird?

0
Kiboman  21.08.2022, 00:32
@lukasxlama
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")
1
lukasxlama 
Fragesteller
 21.08.2022, 00:35
@Kiboman

Danke, eigentlich sehr logisch, aber irgendwie bin ich darauf nicht gekommen.😅

1