Seite 1 von 1

Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 10:10
von qcaine
Hallo zusammen,
bin ein kompletter Anfänger was Python angeht, habe mir deshalb ein Buch gekauft das auch für Anfänger geeignet ist.
In dem Buch ist ein Programmierbeispiel das den Notendurchschnitt berechnet.
Bei mir funktioniert den Code aus welchem Grund auch immer nicht so richtig. Der Durchschnitt wird falsch berechnet.
Wo ist der Fehler ??
Bitte um Hilfe.

weiter = True
notenliste = []

while weiter:
print("Was möchten Sie tun?\n\n")
print("Wählen Sie aus:\n")
print("1.Eine Note hinzufügen\n")
print("2.Durchschnitt berechnen\n")
print("3.Alle Noten Ausgeben\n")
print("4.Programm beenden\n")
eingabe = int(input("Ihre Eingabe 1,2,3 oder 4:"))

if eingabe == 1:
note = int(input("Geben Sie die Note ein."))
notenliste.append(note)


elif eingabe == 2:
i = 0
summe = 0
for summe in notenliste:
summe += note


i += 1
if i != 0:
print("Der Durchschnitt ist:", summe/i)
else :
print("Es sind noch keine Noten vorhanden")

elif eingabe == 3 :
print("Noten",notenliste)

elif eingabe == 4 :
weiter = False


else:
print("Ungültige Eingabe")
print("Auf Wiedersehen")

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 10:22
von __deets__
Du überschreibst die Summe immer wieder. Du darfst die Laufvariable nicht summe nennen. Sondern die sollte zb note heissen.

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 10:38
von qcaine
Auch wenn ich die "summe" "note" nenne ..passiert der gleiche Fehler.

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 10:40
von __deets__
Bitte den Code zeigen. Und in Code tags setzen, damit er nicht verstümmelt wird. Das ist der </>-Knopf im vollständigen Editor.

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 11:15
von qcaine

Code: Alles auswählen

weiter = True
notenliste = []

while weiter:
    print("Was möchten Sie tun?\n\n")
    print("Wählen Sie aus:\n")
    print("1.Eine Note hinzufügen\n")
    print("2.Durchschnitt berechnen\n")
    print("3.Alle Noten Ausgeben\n")
    print("4.Programm beenden\n")
    eingabe = int(input("Ihre Eingabe 1,2,3 oder 4:"))

    if eingabe == 1:
       note = int(input("Geben Sie die Note ein."))
       notenliste.append(note)


    elif eingabe == 2:
       i = 0
       summe = 0
       for summe in notenliste:
          summe += note

          
          i += 1
       if i != 0:
            print("Der Durchschnitt ist:", summe/i)
       else :
            print("Es sind noch keine Noten vorhanden")

    elif eingabe == 3 :
            print("Noten",notenliste)

    elif eingabe == 4 :
        weiter = False


    else:
        print("Ungültige Eingabe")
print("Auf Wiedersehen")

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 11:41
von __deets__
Da steht doch noch immer “for summe in notenliste”. Also macht es auch immer noch dasselbe.

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 11:44
von qcaine
Hatte es in PyCharm geändert auf "note" hat aber nix gebracht , deswegen wieder zurück zum alten.

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 12:52
von __deets__
Es ist aber immer noch falsch. Nur weil dann noch was anderes falsch ist, wird es nicht richtig. Also bitte den verbesserten Code posten, damit man beurteilen kann, was NOCH nicht geht.

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 13:13
von qcaine

Code: Alles auswählen

weiter = True
notenliste = []

while weiter:
    print("Was möchten Sie tun?\n\n")
    print("Wählen Sie aus:\n")
    print("1.Eine Note hinzufügen\n")
    print("2.Durchschnitt berechnen\n")
    print("3.Alle Noten Ausgeben\n")
    print("4.Programm beenden\n")
    eingabe = int(input("Ihre Eingabe 1,2,3 oder 4:"))

    if eingabe == 1:
       note = int(input("Geben Sie die Note ein."))
       notenliste.append(note)


    elif eingabe == 2:
       i = 0
       note = 0
       for note in notenliste:
          note += note


          i += 1
       if i != 0:
            print("Der Durchschnitt ist:", note/i)
       else :
            print("Es sind noch keine Noten vorhanden")

    elif eingabe == 3 :
            print("Noten",notenliste)

    elif eingabe == 4 :
        weiter = False


    else:
        print("Ungültige Eingabe")
print("Auf Wiedersehen")

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 13:56
von __deets__
Du sollst nicht stumpf überall summe durch Note ersetzen. Schau dir das nochmal genau an, was du da gerade rechnest.

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 14:12
von Dennis89
Hallo,

verstehst du deine 'for'-Schleife? Ausgeschrieben sieht das so aus:

Code: Alles auswählen

for note in notenliste:
    note = note + note
Was erwartest du denn für ein Ergebnis wenn du zum Beispiel eine 3 und eine 5 in deiner notenliste hast?
Welchen Wert hat 'note nachdem die Schleife durchgelaufen ist und wieso?

Grüße
Dennis

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 16:30
von andie39
So würde es gehen:

Code: Alles auswählen


elif eingabe == 2:
       i = len(notenliste)
       note= sum(notenliste)
       if sum(notenliste) !=0:
           print("Der Durchschnitt ist:", note/i)
       else:
           print("Es sind noch keine Noten vorhanden")
         
 

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 17:07
von gerpark
Hallo qcaine,
unabhängig von der Funktion sum() musst Du aber die for - Schleife verstehen. Du brauchst neben der notenliste dazu 2 Variablen: note und summe,
und musst dann prüfen ob die 'summe' richtig gebildet wird.
viel Spaß, gerpark

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 17:18
von __blackjack__
@andie39: Am Anfang ein ``if notenliste:`` wäre sicherer. Denn es könnte ja eine Liste sein wo der Benutzer mal versucht hat ob man auch negative Werte eingeben kann. Die Eingaben -1 und 1 würden dann beispielsweise zu einem `ZeroDivisionError` führen.

Code: Alles auswählen

    elif eingabe == 2:
        if notenliste:
            print("Der Durchschnitt ist:", sum(notenliste) / len(notenliste))
        else:
            print("Es sind noch keine Noten vorhanden.")

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 17:28
von kbr
@__blackjack__: der Test auf notenliste ist sicher sinnvoll, falls ein Anwender gar nichts eingegeben hat. Aber mit den Eingaben von -1 und 1 kommt einfach 0 raus – garbage in, garbage out :)

Re: Fehler im Code

Verfasst: Samstag 25. Dezember 2021, 18:15
von andie39
Man sollte wohl einbauen, dass ein negativer Wert als Note nicht eingegeben werden kann.