Seite 1 von 1
Zwischenergebnisse in einer Liste anzeigen
Verfasst: Montag 15. März 2021, 13:41
von Intregral
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?
Re: Zwischenergebnisse in einer Liste anzeigen
Verfasst: Montag 15. März 2021, 14:44
von Sirius3
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}")
Re: Zwischenergebnisse in einer Liste anzeigen
Verfasst: Montag 15. März 2021, 14:58
von Intregral
Ok, sieht etwas anders aus und geht wohl auch leichter. Vielen Dank für die Hilfe!
Re: Zwischenergebnisse in einer Liste anzeigen
Verfasst: Montag 15. März 2021, 15:12
von __blackjack__
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()
Re: Zwischenergebnisse in einer Liste anzeigen
Verfasst: Mittwoch 24. März 2021, 13:31
von Intregral
Hm ok, das sieht allerdings kompliziert aus und übersteigt mein Anfänger-Wissen...

Re: Zwischenergebnisse in einer Liste anzeigen
Verfasst: Mittwoch 24. März 2021, 15:55
von __blackjack__
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.

Re: Zwischenergebnisse in einer Liste anzeigen
Verfasst: Mittwoch 24. März 2021, 16:16
von Sirius3
@__blackjack__: kompliziert ist ein fünffach verschachtelter Funktionsaufruf

Re: Zwischenergebnisse in einer Liste anzeigen
Verfasst: Mittwoch 24. März 2021, 17:22
von __blackjack__
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()
Re: Zwischenergebnisse in einer Liste anzeigen
Verfasst: Donnerstag 25. März 2021, 10:58
von Intregral
Danke sehr! Wie gesagt, ich bin erst ganz am Anfang.
