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)
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]
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)
...
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)
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)
Split gibt Ihnen ein Array von Strings zurück. Sie müssen diese also in Ganzzahlen umwandeln, bevor Sie die Summenfunktion verwenden.
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))
Sie können es versuchen.
reduce(lambda x,y:x+y, [float(x) for x in distance])