在Python中汇总字符串的元素

时间:2015-06-21 20:10:00

标签: python string

我是python的新人。我开始阅读麻省理工学院教授关于python发表的一本书。我从这本书中得到了练习。我试图解决这个问题,但我做不到。

问题:设s为包含十进制数字序列的字符串 用逗号分隔,例如,s ='1.23,2.4,3.123'。写一个打印的程序 s中数字的总和。 我必须找出1.23,2.4和3.123

的总和

到目前为止,我已经制作了一些代码来解决这个问题,我的代码也在下面:

s = '1.23,2.4,3.123'
total = 0
for i in s:
    print i
    if i == ',':

请有人帮助我怎么走?

3 个答案:

答案 0 :(得分:4)

您只需先将,字符串拆分,然后您就会有一个字符串数字列表:

>>> s.split(',')
['1.23', '2.4', '3.123']

然后你需要将这个字符串转换为float对象,直到你可以计算出sum,为此你有2个选择:

首先使用map函数:

>>> sum(map(float, s.split(',')))
6.753

第二种方法是在sum函数中使用generator expression

>>> sum(float(i) for i in s.split(','))
6.753

答案 1 :(得分:0)

使用str.split()要简单得多,就像在

中一样
s = '1.23,2.4,3.123'
total = 0
for i in s.split(','):
    total += float(i)

答案 2 :(得分:0)

Pythonic和更多的努力,在你走的过程中穿过弦乐并建立数字,但它可能更符合初学者的工作精神,以及更多原始代码的延续:

s = '1.23,2.4,3.123'
total = 0
number_holder_string = ''

for character in s:
    if character == ',':    # found the end of a number
        number_holder_value = float(number_holder_string)
        total = total + number_holder_value
        number_holder_string = ''

    else:
        number_holder_string = number_holder_string + character

print total

这样,number_holder_string为:

''
'1'
'1.'
'1.2'
'1.23'
found a comma -> convert 1.23 from string to value and add it.
''
'2'
'2.'
etc.