Wie schreibt man eine Funktion, welche die Gaußsche Summenformel berechnet in Python?
3 Antworten
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
def gauss(min,max):
return sum(range(min,max+1))
Nachtrag: Wie ralphdieter korrekterweise anmahnt, geht es bei der Summenformel darum sich das aufsummieren zu ersparen, dann wären wird bei:
def gauss (n):
return n*(n+1)/2
Und man könnte das natürlich auch allgemein für die arithmetische Reihe umsetzen.
![](https://images.gutefrage.net/media/user/ralphdieter/1444750340_nmmslarge.jpg?v=1444750340000)
Wie ralphdieter korrekterweise anmahnt
Eigentlich war es paaauleee, der es zuerst bemerkt hat. Ich hab's nur gleich weitergeplappert, weil mir Rummeckern so viel Spaß macht.
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
![](https://images.gutefrage.net/media/user/ralphdieter/1444750340_nmmslarge.jpg?v=1444750340000)
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
mindestens eienr der Faktoren n, n+1 sollte gerade sein udn somit den Primfaktor 2 enthalten - oder habe ich etwas nicht bedacht?
Wenn dann vielleicht eher n auf int casten?
![](https://images.gutefrage.net/media/user/ralphdieter/1444750340_nmmslarge.jpg?v=1444750340000)
In Python 2 war int/int ⇒ int. In Python 3 ist int/int immer float (4/2 ⇒ 2.0). Die gute alte Integerdivision wird von int//int übernommen (das auch in den letzten Python-2-Versionen funktioniert).
Bei gauss() ist klar, dass eine ganze Zahl herauskommt. Aber 10*(10+1)/2 ist exakt 55.0, und 10*(10+1)//2 ergibt runde 55 :)
Man könnte das Ergebnis auch casten, aber ich vermute, dass das weniger effizient ist.
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
Du hast natürlich recht, da habe ich gar nicht mehr dran gedacht.
![](https://images.gutefrage.net/media/user/ralphdieter/1444750340_nmmslarge.jpg?v=1444750340000)
War mir klar. Ich habe es nur so ausführlich beschrieben, damit die Fragestellerin auch was davon hat.
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
return sum(i for i in range(1,n + 1)
und das setzte jetzt in eine Funktion - n bestimmst du selber
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
Och nöö doch nicht gleich die Lösung, wie sollen die Leute denn was lernen bei ihren Hausaufgaben.
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/ralphdieter/1444750340_nmmslarge.jpg?v=1444750340000)
doch nicht gleich die Lösung
ist ja auch nur der Anfang. Da ist noch genug Eigenarbeit zu leisten – zähl mal die Klammern ;-)
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
ich Schusselchen :-D - im Grunde gehts sogar noch viel viel einfacher ohne List Comprehension
![](https://images.gutefrage.net/media/user/ralphdieter/1444750340_nmmslarge.jpg?v=1444750340000)
ich Schusselchen
Da muss ich mich anschließen. Normalerweise muss dieses Beispiel herhalten, um Schleifen zu üben, aber diese Aufgabe sagt ja ausdrücklich „Gaußsche Summenformel“, und nicht „Summe aller Zahlen“.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
Du schreibst eine Funktion, welche deine Werte als entsprechende Eingabeparameter entgegennehmen kann, berechnest die Summe in der Funktion und returnst den Wert.
Das ist nicht die Gaußsche Summenformel.
Willkommen im Club :-)