I'm new to python (PYTHON 3.4.2) and I'm trying to make a program that adds and divides to find the average or the mean of a user's input, but I can't figure out how to add the numbers I receive.
When I open the program at the command prompt it accepts the numbers I input and would print it also if I use a print function, but it will not sum the numbers up.
I receive this error:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
My code is below:
#Take the user's input
numbers = input("Enter your numbers followed by commas: ")
sum([numbers])
Any help would be deeply appreciated.
input
takes a input as string
>>> numbers = input("Enter your numbers followed by commas: ")
Enter your numbers followed by commas: 1,2,5,8
>>> sum(map(int,numbers.split(',')))
16
you are telling user to give input saperated by comma, so you need to split the string with comma, then convert them to int then sum it
demo:
>>> numbers = input("Enter your numbers followed by commas: ")
Enter your numbers followed by commas: 1,3,5,6
>>> numbers
'1,3,5,6' # you can see its string
# you need to split it
>>> numbers = numbers.split(',')
>>> numbers
['1', '3', '5', '6']
# now you need to convert each element to integer
>>> numbers = [ x for x in map(int,numbers) ]
or
# if you are confused with map function use this:
>>> numbers = [ int(x) for x in numbers ]
>>> numbers
[1, 3, 5, 6]
#now you can use sum function
>>>sum(numbers)
15
input
will give you string, and you are trying to concat string with int.
First you need to convert elements of "numbers" to int, no need to strip the comma or whitespaces. This code is pretty straight forward and works fine.
numbers = input("Enter your numbers followed by commas: ")
numbers_int = [int(x) for x in numbers]
numbers_sum = sum(numbers_int)
print numbers_sum
Try the following code. It works for me. Actually input()
tries to run the input as a Python expression. But the raw_input()
takes the input as string. input()
exists in Python 3.x.You can find more details here
numbers = input("Enter your numbers followed by commas: ") ## takes numbers as input as expression
print sum([i for i in numbers]) ## list comprehension to convert the numbers into invisible list. This is done because `sum()` runs only on iterable and list is iterable.
Output:
Enter your numbers followed by commas: 1,2,3,4
10
Simple: the list elements are stored as string :) So you have to convert all of them to int
来源:https://stackoverflow.com/questions/26923445/sum-function-prob-typeerror-unsupported-operand-types-for-int-and-str