return sume funktion

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
moh
User
Beiträge: 25
Registriert: Montag 15. April 2019, 21:53

Schreiben Sie eine Funktion in Python, der ein Array mit Zahlen übergeben wird und die als Ergebnis die Summe aller Zahlen des Arrays zurückliefert.

def return_sum(feld):
i=0
summe=0
for i in range (0,len(feld)):
summe=summe+feld

return summe
feld=[2,4,3,2,1]
print(return_sum(feld))

es liefert mir keine summe, sondern die wert des index 2
Benutzeravatar
snafu
User
Beiträge: 6866
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

So geht das auch nicht. Du müsstest

Code: Alles auswählen

summe = summe + feld[i]
nehmen. Aber auch das macht man in Python nicht. Der typische Weg wäre:

Code: Alles auswählen

for number in numbers:
    result += number
...oder gleich die eingebaute sum()-Funktion benutzen!
nezzcarth
User
Beiträge: 1757
Registriert: Samstag 16. April 2011, 12:47

moh hat geschrieben: Montag 22. April 2019, 15:36 es liefert mir keine summe, sondern die wert des index 2
Der gezeigte Code sollte eigentlich gar kein Ergebnis liefern, sondern einen TypeError. Du addierst die gesamte Eingabeliste wiederholt zum Wert Null; das kann natürlich nicht funktionieren :) Entweder du addierst die Werte der einzelnen Felder auf (dafür ist ja das 'i' gedacht; das muss übrigens nicht mit '0' initialisiert werden und auf die '0' bei 'range' kannst du auch verzichten), oder du machst es so, wie man es in Python eigentlich machen sollte, d.h. du sparst dir die Zählvariable und iterierst direkt über die Liste. Falls der Dozent/Lehrer darauf besteht, dass du es mit einer Zählvariable machen sollst, würde ich persönlich einen '(sic !)', o.ä. im Code hinterlassen um anzuzeigen, dass man weiß, dass das eigentlich falsch ist.

Edit: snafu war schneller...
Benutzeravatar
__blackjack__
User
Beiträge: 14042
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@moh: Der Code läuft gar nicht, weil der durch einen Fehler in der Einrückung nicht einmal am Compiler vorbei kommt.

@nezzcarth: Nein die Eingabeliste wird nicht addiert sondern das Element am Index `i`. Das sieht man bloss nicht (direkt) im Beitrag, weil aus dem ``[ i ]`` (wo ich jetzt absichtlich Leerzeichen rein gesetzt habe) im Beitrag der Tag für „italic“, also kursiv, gesetzten Text wird. Was man dann indirekt daran erkennen kann, das der folgende Text kursiv gesetzt ist.

@moh: Darum setze bitte Quelltext auch in die dafür im Forum verwendeten Tags, damit a) die Einrückung nicht verloren geht, und b) kein Quelltext als Foren-Tags interpretiert wird. Beides ist wichtig damit wir tatsächlich Deinen Code sehen können wie Du ihn geschrieben und ausgeführt hast.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
moh
User
Beiträge: 25
Registriert: Montag 15. April 2019, 21:53

snafu hat geschrieben: Montag 22. April 2019, 15:47 So geht das auch nicht. Du müsstest

Code: Alles auswählen

summe = summe + feld[i]
nehmen. Aber auch das macht man in Python nicht. Der typische Weg wäre:

Code: Alles auswählen

for number in numbers:
    result += number
...oder gleich die eingebaute sum()-Funktion benutzen!
mit welchem wert muss den result instaliert ? result=0?
nezzcarth
User
Beiträge: 1757
Registriert: Samstag 16. April 2011, 12:47

__blackjack__ hat geschrieben: Montag 22. April 2019, 15:57 @nezzcarth: Nein die Eingabeliste wird nicht addiert sondern das Element am Index `i`. Das sieht man bloss nicht (direkt) im Beitrag, weil aus dem ``[ i ]`` (wo ich jetzt absichtlich Leerzeichen rein gesetzt habe) im Beitrag der Tag für „italic“, also kursiv, gesetzten Text wird. Was man dann indirekt daran erkennen kann, das der folgende Text kursiv gesetzt ist.
Hätte ich eigentlich wissen müssen; :oops: Danke für den Hinweis.
moh
User
Beiträge: 25
Registriert: Montag 15. April 2019, 21:53

[def return_sum(numbers):
result=0
for number in numbers:
result+= number
return result

numbers=[2,4,3,2,1]
print(return_sum(numbers))
]
[Leider funktoniert immer noch nicht
ich weiß, dass es mit dem eingebaute sum funktion geht, aber will die summe als rückgabewert]
Benutzeravatar
__blackjack__
User
Beiträge: 14042
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@moh: Die eingebaute `sum()`-Funktion hat die Summe als Rückgabewert.

Was denkst Du denn was ``return`` bewirkt? Beschreibe doch mal was da in welcher Reihenfolge ausgeführt wird. Das konkrete Beispiel.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
moh
User
Beiträge: 25
Registriert: Montag 15. April 2019, 21:53

hat endlich funktoniert , danke an allen
Antworten