Python Übung zahlen zusammenzählen?
Ich bin gerade dabei Python zu lernen und soll eine kleine Übung dazu machen, komme dabei aber absolut nicht weiter. Ich will ein Programm schreiben in dem ich eine Zahl eingebe, sagen wir bsp. 2350, das programm soll dann alle Zahlen aufsummieren die vor 2350 kommen, sprich 1+2+3+4+5+6+7+8+9+10+11 und so weiter bis eben 2350 und diese zahl dann ausgeben. Kann mir jemand helfen wie ich das hinbekomme
2 Antworten
Stichwort: Schleife.
Nimm eine Variable "Zahl" und setze sie gleich 1.
Nimm eine 2. Variable "Ergebnis" un setze sie gleich 0.
Nimm eine 3. Variable "Zaehler" und setze sie auf den Wert, der eingegeben wird ( in Deinem Beispiel 2350).
Lass nun in einer Schleife den Wert von "Zahl" zum "Ergebnis" hinzuaddieren.
Die Schleife wird solange aufgerufen, bis der Wert des Zaehlers erreicht wird.
Nach der Schleife einfach "Ergebnis" ausgeben lassen.
Kurz Zusammengefasst:
1. Variablen festlegen
2. Schleife durchlaufen lassen
3. Ergebnis ausgeben
zahl = 1
ergebnis = 0
zaehler = 2350
while zahl <= zaehler:
ergebnis = ergebnis + 1
zahl = zahl + 1
print("Die Summe entspricht: " + str(ergebnis))
meinst du so? wie gebe ich das insgesamte Ergebnis jetzt noch aus, bei mir gibt es jetzt ja nur die 2350 aus da ich einfach str(ergebnis) eingegeben hab
Das, was du möchtest, kann man - wie in den anderen Antworten schon erwähnt - in einer Schleife realisieren ... zumindest wenn man blutiger Anfänger ist, und noch nie richtig in Python programmiert hat. :)
Wenn man hingegen schon etwas fortgeschritten ist, schreibt man einfach Folgendes:
sum(range(1, 2350 + 1))
Allerdings sollte man dabei im Hinblick auf Laufzeit - und evtl. Speicherverbrauch - Bauchschmerzen bekommen, es sei denn, man kommt aus dem PHP-Lager. :)
Wenn man jetzt aber in der 6ten Klasse gut aufgepasst hat, dann erinnert man sich auch daran, dass man die vorliegende Problemstellung effizient und elegant mithilfe der Gaußschen Summenformel löst:
(2350 * 2350 + 2350) // 2
Um den Unterschied in der Performance zu verstehen, kannst du statt 2350 ja mal 235000000 einsetzen, und die obige Version (welche intern eine Schleife benutzt) und die untere vergleichen.
Für weitere Infos:
https://de.wikipedia.org/wiki/Gau%C3%9Fsche_SummenformelDas ganze kann man auch noch schick in eine Funktion verpacken, aber da es so klein ist, würde ich sogar zu einem übersichtlichen Lambda tendieren:
g = lambda n: (n * n + n) // 2
print(g(2350))
Viel Spaß! :)
PS: Der Vollständigkeit halber noch mal die naive Lösung mit expliziter Schleife:
summe = 0
for i in range(1, 2350 + 1):
summe += i
print(summe)
Das ist aber - wie gesagt - grauenvoll ineffizient. :)
Super danke für die Antwort, eine frage noch wenn ich jetzt aber selber entscheiden möchte welche zahl ich eingebe, wie mache ich das, also sagen wir input:"Zahl: " und es mir daraus dann diese summe berechnet