2016-10-20 6 views
-3

Ich versuche, die Summe aller Zahlen in einer Liste zu finden, aber jedes Mal, wenn ich versuche, bekomme ich einen Fehler, dass es die Zeichenfolge nicht in Float konvertieren kann. Hier ist was ich bisher habe.Konnte Zeichenfolge in Float (Python) nicht konvertieren

loop = True 
float('elec_used') 
while (loop): 
    totalelec = sum('elec_used') 
    print (totalelec) 
    loop = False 
+7

Was erwarten Sie 'float ('elec_used') 'zu tun? –

+0

Bitte akzeptieren Sie die Antwort, die Ihnen geholfen hat, das Problem als Referenz für andere mit dem gleichen Problem in Zukunft –

Antwort

1

Sie benötigen keine Ihrer Code oben. Die while-Schleife ist unnötig und es sieht so aus, als würde sie die Schleife in einer Iteration gerade verlassen, d.h. sie wird nicht korrekt verwendet. Wenn Sie einfach alle Werte in der Liste summiert:

sum([float(i) for i in elec_used]) 

Wenn dieser Fehler produziert, geben Sie bitte Ihre elec_used Liste schreiben. Es enthält wahrscheinlich Zeichenfolgenwerte oder Leerzeichen.

+0

summe (float (i) für i in elec_used) Ich glaube, dass Sie die eckigen Klammern verlieren können –

+0

^ja, was er sagte @RolfofSachsen –

0

'elec_used' ist vom Typ string von Zeichen. Sie können keine Zeichen in die float konvertieren. Ich bin mir nicht sicher, warum du dachtest, du könntest es tun. Sie können die numerische Zeichenfolge jedoch in Fließkomma umwandeln, indem Sie sie typisieren. Zum Beispiel:

>>> number_string = '123.5' 
>>> float(number_string) 
123.5 

Jetzt kommt zu Ihrem zweiten Teil, für die Berechnung der Summe der Anzahl. Nehmen wir an, Sie haben die Zeichenfolge aus mehreren Zahlen. Zuerst .split() die Liste, tippen Sie jeden Artikel auf float und berechnen Sie dann die sum(). Zum Beispiel:

>>> number_string = '123.5 345.7 789.4' 
>>> splitted_num_string = number_string.split() 
>>> number_list = [float(num) for num in splitted_num_string] 
>>> sum(number_list) 
1258.6 

, die in einer Linie mit Liste Verständnis geschrieben werden konnte als:

>>> sum(float(item) for item in number_string.split()) 
1258.6 

OR, mit map() als:

>>> sum(map(float, number_string.split())) 
1258.6 
Verwandte Themen