Arithmetisches Mittel in Python mit einer While-Schleife?
Hey, also ich habe von meinem Dozenten eine Aufgabe bekommen bei der ich überhaupt nicht weiter komme, da ich in Informatik eine Katastrophe bin:
Schreiben Sie ein Programm, das unter Verwendung einer while-Schleife beliebig viele Ganzzahlen durch Benutzereingabe einliest. Nach dem Einlesen einer 0 (Endemarke) soll das Programm die Anzahl und den Durchschnitt (arithmetisches Mittel) der bisher gelesenen Zahlen angeben.
Wäre für Hilfe sehr dankbar!
3 Antworten
mhm...python kann ich nicht, aber in Pseudo Code
var liste = "";
var eingabe = 0;
while (true)
{
eingabe = input;
if(eingabe == 0)
{
break;
}
else
{
liste.add(eingabe);
}
}
var summe = 0;
foreach(zahl in liste)
{
summe += zahl;
}
println("Anzahl der eingegeben Zahlen : " + liste.size);
println("Durchschnitt : " + (summe / liste.size));
so in etwa. Musst du halt jetzt in Pyhton übersetzen.
Schreibe eine Schleife, bei der du in jedem Durchlauf eine Benutzereingabe einliest. Prüfe, ob die Eingabe "0" gewesen ist (dann kannst du mit einem Break die Schleife beenden). Solange die Eingabe nicht "0" ist, nutze die Eingabe jeweils zur weiteren Berechnung des arithmetischen Mittels.
------------
Du könntest die Eingaben alle in einer Liste speichern, und am Ende die Werte in der Liste summieren und diese Summe durch die Anzahl der Werte in der Liste dividieren.
Allerdings brauchst du am Ende nur das arithmetische Mittel und die Anzahl der Werte, die ausgegeben werden sollen. Demnach kann es sinnvoll sein, statt einer Liste aller Werte nur einen aktuellen Summenwert und die Anzahl der Werte abzuspeichern. (Das spart gegebenenfalls Platz im Speicher.)
D.h. du hast einen Summenwert, den du beispielsweise summe nennst, und eine Zählvariable, die du beispielsweise anzahl nennst. Bei jeder Eingabe (ungleich 0) addierst du dann den eingegeben Wert zu summe, und erhöhst anzahl um 1.
Beispiel mit Zwischenspeicherung aller Zahlen in einer Liste:
print("Gib ganze Zahlen ein, deren arithmetisches Mittel berechnet werden soll.")
print("[Bestätige die eingegebene Zahl jeweils mit Enter.]")
print("[Durch Eingabe von 0 wird die Zahlenabfrage beendet.]")
L = []
while True:
eingabe = int(input("Nächste Zahl: "))
if eingabe == 0:
break
else:
L.append(eingabe)
anzahl = len(L)
arithM = sum(L)/anzahl
print(f"Es wurden {anzahl} Zahlen eingegeben.")
print(f"Arithmetische Mittel dieser Zahlen: {arithM}")
Beispiel ohne Zwischenspeicherung aller Zahlen in einer Liste:
print("Gib ganze Zahlen ein, deren arithmetisches Mittel berechnet werden soll.")
print("[Bestätige die eingegebene Zahl jeweils mit Enter.]")
print("[Durch Eingabe von 0 wird die Zahlenabfrage beendet.]")
anzahl = 0
summe = 0
while True:
eingabe = int(input("Nächste Zahl: "))
if eingabe == 0:
break
else:
anzahl += 1
summe += eingabe
arithM = summe/anzahl
print(f"Es wurden {anzahl} Zahlen eingegeben.")
print(f"Arithmetische Mittel dieser Zahlen: {arithM}")
Ich hab noch nie irgendwas in Python programmiert und kann dir entsprechend auch keinen korrekten Quellcode soufflieren, aber die allgemeine Logik dahinter ist ja in jeder Sprache gleich.
Du deklarierst erstmal 2 variablen als integer
Dann beginnst du deine while Schleife mit der Abbruch Bedingung solange die Eingabe ≠ 0 ist
In der Schleife liest du eine Zahl ein welche du auf deine erste Variable (n) aufaddierst
Dann rechnest du die zweite Variable (i) + 1
Dann kommt der Fuß der Schleife
Dann kommt die Ausgabe von i - 1 (Anzahl der eingegebenen zahlen) und n/(i-1)