Seite 1 von 1

Frage zu elif ==

Verfasst: Samstag 23. Januar 2021, 12:22
von AuricomX97
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!

Re: Frage zu elif ==

Verfasst: Samstag 23. Januar 2021, 12:26
von Sirius3
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.

Re: Frage zu elif ==

Verfasst: Samstag 23. Januar 2021, 12:36
von AuricomX97
Ah, verstehe. Vielen Dank für deine Hilfe!

Re: Frage zu elif ==

Verfasst: Samstag 23. Januar 2021, 16:52
von __blackjack__
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()

Re: Frage zu elif ==

Verfasst: Sonntag 24. Januar 2021, 14:10
von AuricomX97
Ah, die Möglichkeiten waren mir noch neu. Mühsam ernährt sich das Eichhörnchen. Vielen Dank!

Re: Frage zu elif ==

Verfasst: Freitag 12. März 2021, 08:33
von Nobody0815
Danke für die Frage und die Antworten. Habe auch etwas dazugelernt.