Python Übung zahlen zusammenzählen?

...komplette Frage anzeigen

3 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

Jo9777 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
NMirR 15.01.2016, 15:42

richtig muss es sein: Ergebnis = Ergebnis + Zahl

1

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

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
Jo9777 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

Kenne Python nicht / kaum.

Wird nicht anders zu lösen sein, wie in jeder anderen Programmiersprache.

Schleife von 1 bis Zielwert und jedes mal in der Schleife den aktuellen Schleifendurchlauf einer zu Anfang auf 0 gesetzten Variablen aufaddieren.

Oder halt Gaußsche Summenformel, was sicher nicht Intention der Lehrkraft war.

Jo9777 15.01.2016, 15:47
zahl = 1
ergebnis = 0
zaehler = 2350

while zahl <= zaehler:
ergebnis = ergebnis + 1
zahl = zahl + 1
return ergebnis
also dann so? jetzt habe ich aber das Problem, dass es mir sagt return wäre eine "outside function"
0
Schlauberger303 15.01.2016, 15:57
@Jo9777

Nicht ganz. Richtige Lösung wurde dir ja weiter oben von TeeTier schon beschrieben.

0

Was möchtest Du wissen?