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!
Summe gerader Zahlen
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.
-
- User
- Beiträge: 4
- Registriert: Samstag 13. November 2021, 12:51
Hi, dies ist bisher mein Lösungsansatz:sparrow hat geschrieben: Samstag 13. November 2021, 15:53 Wo kommst du denn im Augenblick nicht weiter?
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?
-
- User
- Beiträge: 4
- Registriert: Samstag 13. November 2021, 12:51
Hey, ich bin neu hier und wusste nicht, wie das hier so läuft.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.
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...
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?
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?
- 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.
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
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
...
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
-
- User
- Beiträge: 4
- Registriert: Samstag 13. November 2021, 12:51
Danke für die Hinweise!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.
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...Code: Alles auswählen
def even_sum(number): for number in range(2, 31) number = 1 ...
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
* 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
- 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
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
- 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
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