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

3 Antworten

Vom Fragesteller 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, 09:00

Das ist nicht die Gaußsche Summenformel.

Willkommen im Club :-)

1
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?

1
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.

1
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.

0
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.

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

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

Lenaa724 
Fragesteller
 10.11.2022, 23:48

Vielen Dank

0
Farelius  10.11.2022, 23:50

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

1
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

0
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 ;-)

0
paaauleee  11.11.2022, 02:53
@ralphdieter

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

1
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“.

0

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