Frage zu elif ==

Code-Stücke können hier veröffentlicht werden.
Antworten
AuricomX97
User
Beiträge: 6
Registriert: Samstag 9. Januar 2021, 23:18

Samstag 23. Januar 2021, 12:22

Hallo zusammen,

ich hbe eine schön blöde Anfängerfrage: Ich habe ein Übungsprogramm geschrieben. Man muss ein paar Aufgabe lösen und bekommt bei jeder richtigen Antwort einen Punkt. Am Ende soll das Programm dann je nach Gesamtpunktzahl verschiedene Sätze ausgeben.
Die Variable "gesamt" wird bei richtiger Beanwtortung jeweils um 1 erhöht.

Am Ende steht dann:

Code: Alles auswählen

if gesamt == 0:
         print("Dringend Nachhilfe benötigt!")
elif gesamt == 1 or gesamt ==  2:
         print("Viele Fehler: weitere Übung nötig")
elif gesamt == 3 or gesamt == 4:
         print("Gute Leistung")
else:
         print("Super. Alles richtig!") 



Das funktioniert auch. Ich hatte zuvor einen Fehler gemacht, den ich aber nicht verstehe. Ich hatte geschrieben:

Code: Alles auswählen

if gesamt == 0:
         print("Dringend Nachhilfe benötigt!")
elif gesamt == 1 or  2:
         print("Viele Fehler: weitere Übung nötig")
elif gesamt == 3 or  4:
         print("Gute Leistung")
else:
         print("Super. Alles richtig!")



Auch wenn ich 5 Punkte hatte, hat das Programm imer ausgegeben: "Viele Fehler: weitere Übung nötig")

Offensichtlich muss ich beides Mal "gesamt ==.." schreiben. Aber was bringt das Program dazu, "Viele Fehler.." auszugeben, obwohl gesamt == 5 ist?

Vielen Dank!
Zuletzt geändert von AuricomX97 am Samstag 23. Januar 2021, 12:32, insgesamt 1-mal geändert.
Sirius3
User
Beiträge: 14207
Registriert: Sonntag 21. Oktober 2012, 17:20

Samstag 23. Januar 2021, 12:26

Du hast eine Oder-Bedingung: wenn gesamt ==1 ist oder die Zahl 2 im logischen Sinne wahr ist, und der zweite Teil trifft immer zu.
AuricomX97
User
Beiträge: 6
Registriert: Samstag 9. Januar 2021, 23:18

Samstag 23. Januar 2021, 12:36

Ah, verstehe. Vielen Dank für deine Hilfe!
Benutzeravatar
__blackjack__
User
Beiträge: 8430
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Samstag 23. Januar 2021, 16:52

Alternativ kann man ``in`` verwenden:

Code: Alles auswählen

    if gesamt == 0:
        print("Dringend Nachhilfe benötigt!")
    elif gesamt in [1, 2]:
        print("Viele Fehler: weitere Übung nötig")
    elif gesamt in [3, 4]:
        print("Gute Leistung")
    else:
        print("Super. Alles richtig!")
Oder eine Liste mit den Texten und man rechnet sich den passenden Index aus `gesamt` aus:

Code: Alles auswählen

    bewertungs_texte = [
        "Dringend Nachhilfe benötigt!",
        "Viele Fehler: weitere Übung nötig",
        "Gute Leistung",
        "Super. Alles richtig!",
    ]
    print(bewertungs_texte[min((gesamt + 1) // 2, len(bewertungs_texte) - 1)])
    print()
“For every complex problem, there is a solution that is simple, neat, and wrong.” — H. L. Mencken
AuricomX97
User
Beiträge: 6
Registriert: Samstag 9. Januar 2021, 23:18

Sonntag 24. Januar 2021, 14:10

Ah, die Möglichkeiten waren mir noch neu. Mühsam ernährt sich das Eichhörnchen. Vielen Dank!
Nobody0815
User
Beiträge: 13
Registriert: Dienstag 23. Februar 2021, 21:25

Freitag 12. März 2021, 08:33

Danke für die Frage und die Antworten. Habe auch etwas dazugelernt.
Antworten