Rechner mit mehr als 2 Zahlen

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
gonzo123
User
Beiträge: 3
Registriert: Montag 24. September 2018, 10:57

Hallo zusammen,

ich habe ein kleines Programm geschrieben, welches mehrere Zahlen subtraiert bis man eine 0 eingibt.

Code: Alles auswählen

differenz = 0

while True:
    zahl = int(input('Zahl : '))
    if zahl != 0:
        differenz -= zahl
    else: 
        zahl == 0
        break
print('Ergebnis = ',differenz)
Gebe ich dann z.B. 1.Zahl 10 und 2.Zahl 5 ein bekomme ich als Ergebnis -15.
Bei der Addition += funktioniert alles. Habe nach Lösungen gesucht aber nichts gefunden.
Stehe jetzt irgendwie total auf dem Schlauch.
Für die Hilfe vielen Dank im Voraus.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du subtrahierst doch immer von 0. was soll dann anderes passieren? Du brauchst eine fallunterscheidung zwischen erster Zahl, die dundir merkst, und allen anderen, die du dann davon subtrahierst.

Dein else ist übrigens komplett überflüssig.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

__deets__: das else braucht man für das break. Wobei ich hier die Bedingung umdrehen würde und dann den neuen else-Block (alten if-Block) ausrücken würde.

Du kannst entweder die erste Zahl außerhalb der while-Schleife einlesen oder `difference` nicht mit 0 sondern mit None initialisieren und dann darauf innerhalb der while-Schleife prüfen.
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Zu Deinem Verständnis: Du rechnest mir einem Wert mehr, als die bewusst ist.

Addition: 0 + a + b + ...
Subtraktion: 0 - a - b - ...

Das funktioniert bei der Addition nur, weil diese kommutativ ist. Die Subtraktion kann man auch als Addition darstellen, dann wird es klarer:

0 + (-a) + (-b) + ...

Grüße ...
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Antworten