it-swarm.com.de

Wie kann ich die sum () - Funktion für eine Liste in Python verwenden?

Ich mache meine Hausaufgaben und es erfordert, dass ich mithilfe von sum () - und len () - Funktionen den Mittelwert einer Eingangsnummernliste ermitteln kann. Als ich mit sum () die Summe der Liste abrufen wollte, habe ich einen Fehler erhalten TypeError: nicht unterstützte Operandentypen für +: 'int' und 'str'. Folgendes ist mein Code:

numlist = input("Enter a list of number separated by commas: ")

numlist = numlist.split(",")

s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:",m)
8
user1275189

Das Problem ist, dass, wenn Sie aus der Eingabe lesen, eine Liste von Zeichenfolgen vorhanden ist. Sie könnten so etwas als zweite Zeile machen:

numlist = [float(x) for x in numlist]
13
Zenon

Das Problem ist, dass Sie eine Liste mit Strings haben. Sie müssen sie in Ganzzahlen umwandeln, bevor Sie die Summe berechnen. Zum Beispiel:

numlist = numlist.split(",")
numlist = map(int, numlist)
s = sum(numlist)
...
10
Justin Ethier

Sie addieren Zeichenfolgen, nicht Zahlen, was Ihre Fehlermeldung sagt.

Konvertieren Sie jeden String in seine jeweilige Ganzzahl:

numlist = map(int, numlist)

Und dann nehmen Sie den Durchschnitt (beachten Sie, dass ich float() anders als Sie benutze):

arithmetic_mean = float(sum(numlist)) / len(numlist)

Sie möchten float() vor dem Teilen als float(1/2) = float(0) = 0.0 verwenden, was nicht Ihren Vorstellungen entspricht.

Eine Alternative wäre, sie alle erst float zu machen:

numlist = map(float, numlist)
4
Blender

Konvertieren Sie die Zeichenfolgeingabe in eine Liste von Gleitkommawerten. Hier ist der aktualisierte Code.

numlist = list(map(int,input("Enter a list of number separated by commas: ").split(',')))
l = len(numlist)
s = sum(numlist)
print("mean :",s/l)
0
fireblaze

Split gibt Ihnen ein Array von Strings zurück. Sie müssen diese also in Ganzzahlen umwandeln, bevor Sie die Summenfunktion verwenden.

0
franka

Für Python 2.7 

numlist = map(int,raw_input().split(","))
s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:"+ str(m))
0

Sie können es versuchen.

reduce(lambda x,y:x+y, [float(x) for x in distance])