Python programmieren?

5 Antworten

from operator import add
from functools import reduce

def gauss(n):
   return reduce(add,range(n+1))

Wäre eine weitere Option, oder auch:

from functools import reduce

def gauss(n):
   return reduce(lambda a,b:a+b,range(n+1))

Möglichkeit 1:

def Gauss(n):
   return sum(range(n+1))

Möglichkeit 2:

def Gauss(n):
    return (n*n + n)//2
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
ralphdieter  01.11.2021, 20:10
int((n*n + n)*0.5)

warum nicht einfach

(n*n + n)//2

?

1
MrAmazing2  01.11.2021, 20:37
@ralphdieter

Python hat Integer-Division?!

Danke dir, das wusste ich noch nicht, sehr nützlich!

1
ralphdieter  01.11.2021, 20:47
@MrAmazing2
Python hat Integer-Division?!

Schon immer. In Python 2 war das einfach der /-Operator. Aber wegen der vielen Heulsusen (“warum ist 1/2==0“) wurde das in Version 3 geändert:

  • 1/2==0.5
  • 1//2==0

Jetzt sind hoffentlich alle zufrieden.

1
ralphdieter  01.11.2021, 20:12

Möglichkeit 3:

def Gauss(n):
    return n>0 ? n+Gauss(n-1) : 0
1
ralphdieter  01.11.2021, 20:17
@ralphdieter

Upps, Korrektur:

def Gauss(n):
    return n+Gauss(n-1) if n>0 else 0

An diese Syntax werde ich mich wohl nie gewöhnen.

1
ralphdieter  01.11.2021, 21:02

Möglichkeit 4:

def Gauss(n):
    for i in range(n):
        for _ in range(i):
            n += 1
   return n

Wer schafft's noch hässlicher?

0

Klar, aber die Lösung gibt es nicht. Hausaufgaben sind dafür da, dass DU was lernst ... Wo ist dein Problem, wo sind deine Ansätze, deine Überlegungen ...

Das Problem ist relativ einfach zu realisieren, z.B. mit der Gaußschen Summenformel. Sonst eben klassisch mit einer Schleife oder der sum-Funktion.

Die gaußsche Summenformel lautet:



In Python wäre es dann so:

def gaus(n):
    return n*(n+1)//2

Ich möchte da einmal an denen rummeckern, die die Aufgabe gestellt haben. Normalerweise (laut pep8) sind funktionsnamen immer klein. Nur Klassen werden mit einem Großbuchstaben am Anfang betitelt