Wie schreibt man eine Funktion, welche die Gaußsche Summenformel berechnet in Python?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
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.


ralphdieter  11.11.2022, 21:57
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.

ralphdieter  11.11.2022, 09:00

Das ist nicht die Gaußsche Summenformel.

Willkommen im Club :-)

KarlRanseierIII  11.11.2022, 18:04
@ralphdieter

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?

ralphdieter  11.11.2022, 21:21
@KarlRanseierIII

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.

ralphdieter  11.11.2022, 21:54
@KarlRanseierIII

War mir klar. Ich habe es nur so ausführlich beschrieben, damit die Fragestellerin auch was davon hat.

return sum(i for i in range(1,n + 1)

und das setzte jetzt in eine Funktion - n bestimmst du selber


Farelius  10.11.2022, 23:50

Och nöö doch nicht gleich die Lösung, wie sollen die Leute denn was lernen bei ihren Hausaufgaben.

paaauleee  10.11.2022, 23:51
@Farelius

Entschuldige :( - bin gerade im Tipmodus - da waren die Finger flinker als der Hintergrundgedanke des selber erarbeitens - aber du hast absolut Recht

ralphdieter  11.11.2022, 00:52
@Farelius
doch nicht gleich die Lösung

ist ja auch nur der Anfang. Da ist noch genug Eigenarbeit zu leisten – zähl mal die Klammern ;-)

paaauleee  11.11.2022, 02:53
@ralphdieter

ich Schusselchen :-D - im Grunde gehts sogar noch viel viel einfacher ohne List Comprehension

ralphdieter  11.11.2022, 08:58
@paaauleee
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“.

Lenaa724 
Beitragsersteller
 10.11.2022, 23:48

Vielen Dank

Du schreibst eine Funktion, welche deine Werte als entsprechende Eingabeparameter entgegennehmen kann, berechnest die Summe in der Funktion und returnst den Wert.