Seite 1 von 1

return sume funktion

Verfasst: Montag 22. April 2019, 15:36
von moh
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

Re: return sume funktion

Verfasst: Montag 22. April 2019, 15:47
von snafu
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!

Re: return sume funktion

Verfasst: Montag 22. April 2019, 15:49
von nezzcarth
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...

Re: return sume funktion

Verfasst: Montag 22. April 2019, 15:57
von __blackjack__
@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.

Re: return sume funktion

Verfasst: Montag 22. April 2019, 16:01
von moh
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?

Re: return sume funktion

Verfasst: Montag 22. April 2019, 16:05
von nezzcarth
__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.

Re: return sume funktion

Verfasst: Montag 22. April 2019, 16:32
von moh
[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]

Re: return sume funktion

Verfasst: Montag 22. April 2019, 17:59
von __blackjack__
@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.

Re: return sume funktion

Verfasst: Montag 22. April 2019, 19:39
von moh
hat endlich funktoniert , danke an allen