#python
#python
Вопрос:
Я пытаюсь найти сумму всех чисел в списке, но каждый раз, когда я пытаюсь, я получаю сообщение об ошибке, что не удается преобразовать строку в float. Вот что у меня есть на данный момент.
loop = True
float('elec_used')
while (loop):
totalelec = sum('elec_used')
print (totalelec)
loop = False
Комментарии:
1. Что вы ожидаете
float('elec_used')
сделать?2. Пожалуйста, примите ответ, который помог вам решить проблему, в качестве ссылки для других, столкнувшихся с той же проблемой в будущем
Ответ №1:
Вам не нужен ни один из приведенных выше кодов. Цикл while не нужен, и похоже, что он просто выходит из цикла за одну итерацию, т. Е. используется неправильно. Если вы просто суммируете все значения в списке:
sum([float(i) for i in elec_used])
Если это приводит к ошибкам, пожалуйста, опубликуйте свой список elec_used. Вероятно, она содержит строковые значения или пробелы.
Комментарии:
1. sum(float(i) для i в elec_used) Я думаю, что вы можете потерять квадратные скобки
2. ^ да, то, что он сказал @RolfofSaxony
Ответ №2:
'elec_used'
имеет тип string
символов. Вы не можете преобразовать символы в float
. Я не уверен, почему вы думали, что сможете это сделать. Однако вы можете преобразовать числовую строку в float, приведя ее к типу. Например:
>>> number_string = '123.5'
>>> float(number_string)
123.5
Теперь переходим ко вашей второй части, к вычислению суммы чисел. Допустим, у вас есть строка из нескольких чисел. Сначала .split()
просмотрите список, введите каждый элемент в float
, а затем вычислите sum()
. Например:
>>> 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
Который можно было бы записать в одну строку, используя понимание списка как:
>>> sum(float(item) for item in number_string.split())
1258.6
ИЛИ, используя map()
как:
>>> sum(map(float, number_string.split()))
1258.6