Summe gerader Zahlen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
studentin998
User
Beiträge: 4
Registriert: Samstag 13. November 2021, 12:51

Hallo zusammen,
ich stehe vor folgender Aufgabe, vielleicht kann mir jemand von euch dabei weiterhelfen:

Aufgabe: Schreiben Sie eine Funktion, die ein Argument erwartet (einen Integer n ) und die Summe aller positiven, geraden Zahlen zwischen 1 und n zurückgibt.

Beispiel: Falls n=10 ist das erwartete Ergebnis 30 :
2+4+6+8+10 = 30

Folgendes ist mir für die Lösung bereits vorgegeben:
def even_sum(number):
.
.
.

Vielen Dank!
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Wo kommst du denn im Augenblick nicht weiter?
Benutzeravatar
snafu
User
Beiträge: 6873
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Und dein erster und einziger Gedankengang war, es ins Forum zu schreiben? Ansonsten lass uns doch teilhaben an dem, was du dir bisher dazu überlegt hast. Einfach nur vorkauen machen wir hier nämlich nicht so gerne.
studentin998
User
Beiträge: 4
Registriert: Samstag 13. November 2021, 12:51

sparrow hat geschrieben: Samstag 13. November 2021, 15:53 Wo kommst du denn im Augenblick nicht weiter?
Hi, dies ist bisher mein Lösungsansatz:

def even_sum(number):
for number in range(2, 31, )
number = 1
while number <= 31:
return(number + 2)

Ich weiß nicht genau, wie ich es schaffe, dass nur die geraden Zahlen als Summe ausgespuckt werden. Bin ich denn schon auf dem richtigen Weg mit meinem Ansatz?
studentin998
User
Beiträge: 4
Registriert: Samstag 13. November 2021, 12:51

snafu hat geschrieben: Samstag 13. November 2021, 15:54 Und dein erster und einziger Gedankengang war, es ins Forum zu schreiben? Ansonsten lass uns doch teilhaben an dem, was du dir bisher dazu überlegt hast. Einfach nur vorkauen machen wir hier nämlich nicht so gerne.
Hey, ich bin neu hier und wusste nicht, wie das hier so läuft.
Mein Lösungsansatz ist bisher folgender:
def even_sum(number):
for number in range(2, 31, )
number = 1
while number <= 31:
return(number + 2)

Ich bin mir nicht sicher, ob ich damit auf der richtigen Spur bin...
Sirius3
User
Beiträge: 18278
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ist ja nicht einmal gültige Python-Syntax.
Was willst Du mit der for-Schleife und der while-Schleife aussagen?
Welche Parameter kann man range mitgeben und ist einer davon geeignet, dass man nur gerade Zahlen bekommt?
Und wie bildet man eine Summe über viele Zahlen?
Benutzeravatar
noisefloor
User
Beiträge: 4195
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

und selbst wenn es die richtige Syntax wäre, würde das keinen Sinn machen.

Code: Alles auswählen

def even_sum(number):
    for number in range(2, 31)
        number = 1
        ...
Mit der 2. Zeile iterierst du über eine Zahlenreihe von 2 bis 30, die jeweilige Zahl ist der Variablen `number` zugeordnet. In der dritten Zeilen überschreibst du `number` direkt wieder mit 1. Macht keinen Sinn...
Das `number`, was du der Funktion übergibst, wird nirgendwo benutzt, sondern in der 2. Zeile anders zugeordnet.

Ein paar Tipps für eine mögliche Umsetzung:
* `number` (also das an die Funktion übergebene Argument) musst du in die range-Funktion einbauen
* Innerhalb der `even_number` Funktion musst du eine neue Variable für die Summe definieren.
* Über die Zahlenspanne von 2..n iterieren ist ok.
* Für jeden Iterationsschritt musst du prüfen, ob die aktuelle Zahl gerade ist - > wenn ja zur bis jetzigen Summe aufsummieren
* Am Ende die Summe per `return` zurückliefern.

Je nach dem, wie gut du (theoretisch) Python können solltest geht das auch eleganter - aber das wissen wir ja nicht, was von dir erwartet wird.

Gruß, noisefloor
studentin998
User
Beiträge: 4
Registriert: Samstag 13. November 2021, 12:51

noisefloor hat geschrieben: Sonntag 14. November 2021, 16:41 Hallo,

und selbst wenn es die richtige Syntax wäre, würde das keinen Sinn machen.

Code: Alles auswählen

def even_sum(number):
    for number in range(2, 31)
        number = 1
        ...
Mit der 2. Zeile iterierst du über eine Zahlenreihe von 2 bis 30, die jeweilige Zahl ist der Variablen `number` zugeordnet. In der dritten Zeilen überschreibst du `number` direkt wieder mit 1. Macht keinen Sinn...
Das `number`, was du der Funktion übergibst, wird nirgendwo benutzt, sondern in der 2. Zeile anders zugeordnet.

Ein paar Tipps für eine mögliche Umsetzung:
* `number` (also das an die Funktion übergebene Argument) musst du in die range-Funktion einbauen
* Innerhalb der `even_number` Funktion musst du eine neue Variable für die Summe definieren.
* Über die Zahlenspanne von 2..n iterieren ist ok.
* Für jeden Iterationsschritt musst du prüfen, ob die aktuelle Zahl gerade ist - > wenn ja zur bis jetzigen Summe aufsummieren
* Am Ende die Summe per `return` zurückliefern.

Je nach dem, wie gut du (theoretisch) Python können solltest geht das auch eleganter - aber das wissen wir ja nicht, was von dir erwartet wird.

Gruß, noisefloor
Danke für die Hinweise!
* Innerhalb der `even_number` Funktion musst du eine neue Variable für die Summe definieren.
-->Wie genau stelle ich das an?
* Für jeden Iterationsschritt musst du prüfen, ob die aktuelle Zahl gerade ist - > wenn ja zur bis jetzigen Summe aufsummieren
--> wie kann ich bei diesem Schritt bis zur jetzigen Summe aufsummieren?

Danke und LG
Benutzeravatar
noisefloor
User
Beiträge: 4195
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich muss da mal mit einer Gegenfragen antworten: wie viel Python kannst du bzw. wie viel wird von dir erwartet, dass du kannst? Die Aufgabe kommt ja ziemlich offensichtlich aus einer Vorlesung oder eine sonstigen (Schul-) Kurs.

Das sind eigentlich alles ziemliche Basics. Du solltest vielleicht nochmal das Grundlagentutorial auf docs.python.org durcharbeiten.

Gruß, noisefloor
Benutzeravatar
DeaD_EyE
User
Beiträge: 1244
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Mit diesen zwei Funktionen kannst du die Aufgabe lösen:

https://docs.python.org/3/library/funct ... func-range
Das dritte Argument ist die Schrittweite.

https://docs.python.org/3/library/functions.html#sum
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten