CGG
CGG

Reputation: 67

How do I separate the numbers from an input in order to add them?

I am trying to have the user input a series of numbers (separated by commas) to receive the total of them.

I have tried (with no luck):

values = input("Input some comma seprated numbers: ")
numbersSum = sum(values)
print ("sum of list element is : ", numbersSum)

values = input("Input some comma seprated numbers: ")
list = values.split(",")
sum(list)
print ("The total sum is: ", sum)

If the user inputs 5.5,6,5.5 the expected output will be 17.

Upvotes: 3

Views: 3018

Answers (7)

Pradeep Pandey
Pradeep Pandey

Reputation: 307

use below

print('sum of input is :',sum(list(map(float,input('Input some comma separated numbers: ').split(',')))))

Upvotes: 0

hodisr
hodisr

Reputation: 314

It's hard to know what went wrong w\o a sample of the error\output code.

I think the issue is in getting the sum of list (very bad name btw) when it's a list of strings.

please try the following

values = input("Input some comma seprated numbers: ")
lst = values.split(",")
lst = [int(curr) for curr in lst]
sum(lst)
print ("The total sum is: ", sum)

This code will work when expecting integers, if you want floats then change the list comprehension.

Try not to name objects with the same name of standard objects such as list,int,str,float etc...

Upvotes: 0

DirtyBit
DirtyBit

Reputation: 16772

# empty list to store the user inputs
lst = []      

# a loop that will keep taking input until the user wants
while True:
    # ask for the input
    value = input("Input a number: ")
    # append the value to the list
    lst.append(value)
    # if the user wants to exit
    IsExit = input("enter exit to exit")
    if 'exit' in IsExit:
        break

# take the sum of each element (casted to float) in the lst 
print("The sum of the list: {} ".format(sum([float(x) for x in lst])))

OUTPUT:

Input a number: 5.5
enter exit to exitno
Input a number: 6
enter exit to exitno
Input a number: 5.5
enter exit to exitexit
The sum of the list: 17.0 

Upvotes: 0

Bill the Lizard
Bill the Lizard

Reputation: 405745

After you split the values by comma into a list, you need to convert them from strings to numbers. You can do that with

values = input("Input some comma seprated numbers: ")
lst = values.split(",")
lst = [float(x) for x in lst]
total = sum(lst)
print("The total sum is: ", total)

For reference, see List Comprehensions in Python.

(Also, you shouldn't use list as a variable name, since that's a function in Python.)

Upvotes: 2

Ralf
Ralf

Reputation: 16505

You have to convert to numbers before adding them together.

For example, you could convert them all into floats:

input_str = input("Input some comma seprated numbers: ")

# Option1: without error checking
number_list = [float(s) for s in input_str.split(',')]

# Option2: with error checking, if you are not sure if the user will input only valid numbers
number_list = []
for s in input_str.split(','):
    try:
        n = float(s)
        number_list.append(n)
    except ValueError:
        pass

print("The list of valid numbers is:", number_list)
print("The sum of the list is:", sum(number_list))

Upvotes: 0

Mike Scotty
Mike Scotty

Reputation: 10782

You're almost there.

After splitting, the values will still be strings, so you have to map them to float.

values = "5.5,6,5.5" # input("Input some comma seprated numbers: ")
L = list(map(float, values.split(",")))
print ("The total sum is: ", sum(L))

Output:

The total sum is:  17.0

Side note: Please don't name your variables list or sum, otherwise you will shadow the python built-ins!

Upvotes: 4

Darius
Darius

Reputation: 12052

You have to convert the inputs to float:

numbers = input("Input some comma seprated numbers: ")

result = sum([float(n) for n in numbers.split(',')])

print(result)

Upvotes: 1

Related Questions