Как я могу использовать функцию sum () для списка в Python? - PullRequest
8 голосов
/ 17 марта 2012

Я делаю свою домашнюю работу, и она требует, чтобы я использовал функции sum () и len (), чтобы найти среднее значение списка входных чисел, когда я пытался использовать sum (), чтобы получить сумму списка, я получил ошибку TypeError: неподдерживаемые типы операндов для +: 'int' и 'str'. Вот мой код:

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)

Ответы [ 7 ]

13 голосов
/ 17 марта 2012

Проблема в том, что когда вы читаете из ввода, у вас есть список строк.Вы можете сделать что-то подобное в качестве второй строки:

numlist = [float(x) for x in numlist]
10 голосов
/ 17 марта 2012

Проблема в том, что у вас есть список строк.Вам нужно преобразовать их в целые числа, прежде чем вычислять сумму.Например:

numlist = numlist.split(",")
numlist = map(int, numlist)
s = sum(numlist)
...
4 голосов
/ 17 марта 2012

Вы добавляете строки, а не числа, о чем говорит ваше сообщение об ошибке.

Преобразуйте каждую строку в соответствующее ей целое число:

numlist = map(int, numlist)

И затем возьмите среднее значение (обратите внимание, что я использую float() иначе, чем вы):

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

Вы хотите использовать float() перед делением, как float(1/2) = float(0) = 0.0, а это не то, что вы хотите.* Альтернативой было бы просто сделать их всех float во-первых:

numlist = map(float, numlist)
0 голосов
/ 14 апреля 2017

Для Python 2.7

numlist = map(int,raw_input().split(","))
s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:"+ str(m))
0 голосов
/ 18 мая 2016

Преобразовать ввод строки в список значений с плавающей запятой. Вот обновленный код.

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 голосов
/ 06 февраля 2014

Вы можете попробовать это.

reduce(lambda x,y:x+y, [float(x) for x in distance])
0 голосов
/ 17 марта 2012

Split возвращает вам массив строк, поэтому вам нужно преобразовать их в целые числа перед использованием функции sum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...