Zwischenergebnisse in einer Liste anzeigen

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
Intregral
User
Beiträge: 20
Registriert: Montag 15. März 2021, 13:35

Hallo,

bin ein ziemlicher Python-Newbie und wage mich gerade an die ersten Algorithmen.

Ich möchte einfach eine Zahlenfolge aufsummieren, was auch klappt. Aber ich möchte mir die aufsummierten Zwischenergebnisse auch anzeigen lassen, und stehe jetzt auf dem Schlauch.

Folgendes habe ich:

Code: Alles auswählen

a = input("Bitte eine Zahl eingeben: ")
print ("")
a = int(a)
i = 1
s = 0
while i <= a:
    s = s + i
    i = i + 1
    
print ("Die Summe der Zahlen von 1 bis" ,a, "ergibt: ", s)
print ("")



for i in range(1,a+1):
    

    print (i, ":", i)


print()
print ("In wissenschaftlicher Schreibweise ist dies ca.")

from decimal import Decimal
x = Decimal(s)
'{:.2e}'.format(x)
Ich komme nicht auf den richtigen Parameter für den print-Befehl nach dem range()

Hat jemand einen Tipp?
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn Du Zwischenergebnisse ausgeben willst, dann mußt Du das innerhalb deiner ersten Schleife machen:

Code: Alles auswählen

maximum = int(input("Bitte eine Zahl eingeben: "))
i = 1
summe = 0
while i <= maximum:
    summe += i
    print("Zwischenergebnis:", summe)
    i += 1
    
print(f"Die Summe der Zahlen von 1 bis {maximum} ergibt: {summe}")
Die while-Schleife sollte aber wie in Deiner zweiten Schleife eine for-Schleife sein:

Code: Alles auswählen

maximum = int(input("Bitte eine Zahl eingeben: "))
summe = 0
for i in range(1, maximum + 1)
    summe += i
    print("Zwischenergebnis:", summe)
    
print(f"Die Summe der Zahlen von 1 bis {maximum} ergibt: {summe}")
Intregral
User
Beiträge: 20
Registriert: Montag 15. März 2021, 13:35

Ok, sieht etwas anders aus und geht wohl auch leichter. Vielen Dank für die Hilfe!
Benutzeravatar
__blackjack__
User
Beiträge: 14054
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Schleifen sind überbewertet:

Code: Alles auswählen

#!/usr/bin/env python3
from functools import partial
from itertools import accumulate

from more_itertools import last, side_effect


def main():
    start = 1
    maximum = int(input(f"Bitte eine ganze Zahl ≥{start} eingeben: "))
    summe = last(
        side_effect(
            partial(print, "Zwischenergebnis:"),
            accumulate(range(start, maximum + 1)),
        )
    )
    print(f"Die Summe der Zahlen von {start} bis {maximum} ergibt: {summe}")


if __name__ == "__main__":
    main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Intregral
User
Beiträge: 20
Registriert: Montag 15. März 2021, 13:35

Hm ok, das sieht allerdings kompliziert aus und übersteigt mein Anfänger-Wissen... ;)
Benutzeravatar
__blackjack__
User
Beiträge: 14054
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Was heisst kompliziert? Sind im Grunde ausschliesslich Zuweisungen an Namen und Funktionsaufrufe. Also eigentlich einfacher als Deins wo noch Schleifen und veränderlicher Zustand dazu kommt.

Und was die Funktionen machen, kann man in der jeweiligen Dokumentation nachlesen. 🙂
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

@__blackjack__: kompliziert ist ein fünffach verschachtelter Funktionsaufruf :-)
Benutzeravatar
__blackjack__
User
Beiträge: 14054
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Na gut, dann halt mit einem Namen für jedes popelige Zwischenergebnis 😉:

Code: Alles auswählen

#!/usr/bin/env python3
from functools import partial
from itertools import accumulate

from more_itertools import last, side_effect


def main():
    start = 1
    maximum = int(input(f"Bitte eine ganze Zahl ≥{start} eingeben: "))
    zahlen = range(start, maximum + 1)
    zwischensummen = accumulate(zahlen)
    zwischenergebnis_ausgeben = partial(print, "Zwischenergebnis:")
    ausgegebene_zwischensummen = side_effect(
        zwischenergebnis_ausgeben, zwischensummen
    )
    summe = last(ausgegebene_zwischensummen)
    print(f"Die Summe der Zahlen von {start} bis {maximum} ergibt: {summe}")


if __name__ == "__main__":
    main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Intregral
User
Beiträge: 20
Registriert: Montag 15. März 2021, 13:35

Danke sehr! Wie gesagt, ich bin erst ganz am Anfang. ;)
Antworten