Python programmieren?
Ich muss ein kleines Programm schreiben zu der Aufgabe:
Schreiben Sie ein Programm Gauss(n), das alle natürlichen Zahlen von 1 bis n addiert.
Kann mir da jemand helfen??
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
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.
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.
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?
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
Möglichkeit 3: