Python for everybody: Aufgabe 5_1

Die Hausaufgabe lautet: Write a program which repeatedly reads numbers until the user enters “done”. Once “done” is entered, print out the total, count,
and average of the numbers. If the user enters anything other than a
number, detect their mistake using try and except and print an error
message and skip to the next number.

Der knifflige Teil der Aufgabe war von der ‚done‘ Eingabe in den Teil mit der Zusammenfassung zu gelangen. Mit break scheint es gelungen. Zuerst werden die Zählervariablen summe und anzahl mit 0 initialisiert. die Wahrheitsvariable für den while-Loop wird auf True gesetzt und eine Eingabe empfangen. Hier wird erst geprüft ob das Ende-Signal eingegeben wurde. Wenn dann wird der Wahrheitswert der Schleife auf False gesetzt, also die Schleife beendet und mit break springt das Programm aus der Schleife in den Zusammenfassungsteil. 

Wenn bei der Eingabe nicht das Ende-Signal eingegeben wird, gelangt die Ausführung in einen Try-Teil, der den Eingabestring in eine Zahl umwandelt und die nötigen Additionen für die Zusammenfassung erledigt. Wenn die Eingabe keinen Wert enthält, der in eine Zahl konvertiert werden kann, erfolgt eine Fehlermeldung und gibt zurück an die while-Schleife, da der Wert ja noch auf True gesetzt ist. 

Der Zusammenfassungsteil gibt die geforderten Werte mit der Printf Funktion aus. Der Fall fehlender Eingaben und daraus resultierend einer Division mit Null wird abgefangen. 

summe = 0
anzahl = 0
while True:
    eingabe = input('Bitte Zahl eingeben: > ')
    if eingabe == 'done':
        False
        break
    else:
        try:
            eingabe = float(eingabe)
            summe = summe + eingabe
            anzahl += 1
        except:
            print('Das war keine Zahl!')
print(f'Die Summe der eingegebenen Zahlen ist: {summe}')
print(f'Die Anzahl der eingegebenen Zahlen ist: {anzahl}')
if anzahl == 0:
    print(f'Es wurden keine Zahlen eingegeben, daher kann kein Durchschnitt berechnet werden.')
else:
    durchschnitt = summe / anzahl
    print(f'Der Durchschnitt der eingegebenen Zahlen ist: {durchschnitt}')