Boolean in if-Statement ändern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Curse
User
Beiträge: 2
Registriert: Montag 28. Februar 2022, 13:42

Hallo zusammen,

ich bin seit ca. 1 - 2 Monaten dabei Python zu lernen, hab auch schon die Basics relativ gut drauf...
Nur jetzt steh ich vor einem Problem, wo ich erst dachte dass ich ganz einfach die Lösung finden werde, nur jetzt doch mein Kopf dran zerbreche... :oops:

Der Code ist ganz simple:

Code: Alles auswählen

Abfrage = True

while Abfrage:
    Frage = input("Weitermachen?(Y/N)")
    if Frage == "Y" or "y":
        print("Weitermachen")
    elif Frage == "N" or "n":
        Abfrage = False
    else:
        print("Bitte gebe nur 'Y' für ja oder 'N' für nein an!")
        
print("Beendet")
Gebe ich nun "N" an kriege ich als Output "Weitermachen" sowie den input("Weitermachen?(Y/N)").
Wie kann das sein? Die While-Abfrage ist ja somit unendlich, obwohl doch beim input -> Y die Abfrage auf = False gestellt wird?

Liebe Grüße
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

or funktioniert nicht wie du denkst. Wenn du prüfen willst, ob etwas dieses oder jenes ist, braucht es

a == dieses or a == jenes
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

Ergänzend:
In dem Fall vielleicht hilfreich: in

Code: Alles auswählen

while True:
    antwort = input("Weitermachen? (Y/N)")
    if antwort in ("y", "Y"):
        print("weitermachen")
    elif antwort in ("N", "n"):
        break
    else:
        print("Bitte gebe nur 'Y' für ja oder 'N' für nein an!")
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Oder man wandelt die Eingabe in Gross- oder Kleinbuchstaben und vergleicht dann: ``antwort = input("…").lower()`` und dann einfach nur noch ``if antwort == "y":``.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
narpfel
User
Beiträge: 691
Registriert: Freitag 20. Oktober 2017, 16:10

Oder vielleicht:

Code: Alles auswählen

while True:
    antwort = input("Weitermachen? (Y/N) ")
    match antwort:
        case "y" | "Y":
            print("weitermachen")
        case "n" | "N":
            break
        case _:
            print("Bitte gib nur 'Y' für ja oder 'N' für nein an!")
🤢
Curse
User
Beiträge: 2
Registriert: Montag 28. Februar 2022, 13:42

Vielen Dank für die ganzen Antworten!
__deets__ hat geschrieben: Montag 28. Februar 2022, 14:36 or funktioniert nicht wie du denkst. Wenn du prüfen willst, ob etwas dieses oder jenes ist, braucht es

a == dieses or a == jenes
Stimmt, du hast vollkommen recht! Das Problem hatte ich in der Vergangenheit schonmal aber hatte es echt schon wieder vergessen. Jetzt klappt es, besten Dank euch allen! :lol: :D
Antworten