Statistik

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
StevenB99
User
Beiträge: 33
Registriert: Donnerstag 4. Juni 2020, 23:12

Hallo, Das ist eine Endlosschleife, wie korrigiere ich das? Ich will das er mit min, max und mittelwert anzeigt.

Code: Alles auswählen

eingabe = 1
summe=0
anzahl_eingabe = 1

minimum=5
maximum=9

while eingabe!=0:
    eingabe=int(input("Bitte geben sie die " +str(anzahl_eingabe+1)+ " Zahl ein"))
    if eingabe!=0:
        if eingabe<minimum:
            minimum=eingabe
        if eingabe>maximum:
            maximum=eingabe
        anzahl_eingabe=anzahl_eingabe+1
        summe=summe+eingabe
if anzahl_eingabe!=0:
    mittelwert=summe/anzahl_eingaben
    anzahl_eingabe=anzahl_eingabe+1
    print("Sie haben", anzahl_eingaben, "Werte eingegeben.")
    print("Die Summe der Werte ist:", summe)
    print("Das Minimum ist:", minimum)
    print("Das Maximum ist:", maximum)
    print("Der Mittelwert ist:", mittelwert)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst auf die Einrückung achten. Was in der Schleife passieren soll, muss auch zu der Schleife gehören.
Sirius3
User
Beiträge: 18273
Registriert: Sonntag 21. Oktober 2012, 17:20

Warum fängst Du mit der 2. Zahl an?
Statt Strings mit + zusammenzustückeln benutzt man Formatstrings.
Statt eingabe mit einem Dummy-Wert zu belegen, dass die while-Schleife beginnt, benutze eine while-True-Schleife.
Warum erhöhst Du anzahl_eingabe nochmal um 1 so dass der ausgegebene Wert um 2 falsch ist?

Die Frage verstehe ich nicht, da Du nirgends eine Endlosschleife hast.

Code: Alles auswählen

summe = 0
anzahl_eingabe = 0
minimum = 5
maximum = 9
while True:
    eingabe = int(input(f"Bitte geben sie die {anzahl_eingabe+1} Zahl ein: "))
    if eingabe == 0:
        break
    if eingabe < minimum:
        minimum = eingabe
    if eingabe > maximum:
        maximum = eingabe
    anzahl_eingabe += 1
    summe += eingabe

if anzahl_eingabe != 0:
    mittelwert = summe / anzahl_eingaben
    print("Sie haben", anzahl_eingaben, "Werte eingegeben.")
    print("Die Summe der Werte ist:", summe)
    print("Das Minimum ist:", minimum)
    print("Das Maximum ist:", maximum)
    print("Der Mittelwert ist:", mittelwert)
StevenB99
User
Beiträge: 33
Registriert: Donnerstag 4. Juni 2020, 23:12

Ich verstehe das nicht, ich kann durchgehend Zahlen eingeben. Das hört nie auf.
Sirius3
User
Beiträge: 18273
Registriert: Sonntag 21. Oktober 2012, 17:20

Es hört auf, wenn Du eine 0 eingibst.
StevenB99
User
Beiträge: 33
Registriert: Donnerstag 4. Juni 2020, 23:12

Ich meine die printfunktion kommt garnicht. Ich kann wie im Bild unendlich viele zahlen eingeben und mit 0 kriege ich ein Error. Mittelwert u.s.w wird mir garnicht angezeigt.

Bild wie kann ich eigene Bilder posten?
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@StevenB99: Wenn Du einen Fehler bekommst, dann musst Du den beheben. Der ist ja auch ziemlich offensichtlich.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
StevenB99
User
Beiträge: 33
Registriert: Donnerstag 4. Juni 2020, 23:12

Ich meine das anders. Ich komme erst garnicht bis zu diesem Block

Code: Alles auswählen

if anzahl_eingabe != 0:
    mittelwert = summe / anzahl_eingaben
    print("Sie haben", anzahl_eingaben, "Werte eingegeben.")
    print("Die Summe der Werte ist:", summe)
    print("Das Minimum ist:", minimum)
    print("Das Maximum ist:", maximum)
    print("Der Mittelwert ist:", mittelwert)

Bitte geben sie die 1 Zahl ein: 4
Bitte geben sie die 2 Zahl ein: 10
Bitte geben sie die 3 Zahl ein: 10
Bitte geben sie die 4 Zahl ein: 100
Bitte geben sie die 5 Zahl ein: 4300
Bitte geben sie die 6 Zahl ein: 400
Bitte geben sie die 7 Zahl ein: 4005
Bitte geben sie die 8 Zahl ein: 400
Bitte geben sie die 9 Zahl ein: 300
Bitte geben sie die 10 Zahl ein: 300
Bitte geben sie die 11 Zahl ein: 200
Bitte geben sie die 12 Zahl ein: 4000
.........
........
.... Das geht für immer so weiter. Minimum,Maximum und Mittelwert bekomme ich nicht raus.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Das hat __deets__ doch berits in der ersten Antwort zu deiner Frage beantwortet.

Zitat: "Du musst auf die Einrückung achten. Was in der Schleife passieren soll, muss auch zu der Schleife gehören."

Wobei du dir die letzte Prüfung auf "0" sparen kannst. Wenn direkt nach der Eingabe der Wert nicht "0" war und er nicht vändert wird, dann ist er ja nun auch noch nicht "0".
Antworten