Python Übung zahlen zusammenzählen?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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


NMirR  15.01.2016, 15:42

richtig muss es sein: Ergebnis = Ergebnis + Zahl

1
Jo9777 
Beitragsersteller
 15.01.2016, 15:37
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 
0

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_Summenformel

Das 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ß! :)


Jo9777 
Beitragsersteller
 15.01.2016, 15:57

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

0
TeeTier  15.01.2016, 20:08
@Jo9777
n = int(input('Zahl: '))
print((n * n + n) // 2)

Das enthält zwar keine Fehlerüberprüfung, falls jemand anstelle einer Zahl "abc" eingibt, aber egal ... so auf die Schnelle sollte das funktionieren. :)

0
TeeTier  15.01.2016, 15:50

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. :)

0