Python中字符串元素的求和

Python中字符串元素的求和,python,string,Python,String,我是python的新手。我开始读麻省理工学院教授出版的一本关于python的书。我从这本书上得到了一个练习。我试图解决这个问题,但我做不到 问题:让我们成为一个包含十进制数字序列的字符串 以逗号分隔,例如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

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

问题:让我们成为一个包含十进制数字序列的字符串 以逗号分隔,例如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 == ',':
请,有人来帮助我如何进一步吗?

使用str.split要简单得多,就像在中一样


您只需首先用拆分字符串,然后就可以得到一个字符串数字列表:

>>> s.split(',')
['1.23', '2.4', '3.123']
然后,您需要将该字符串转换为浮点对象,直到您可以计算这些和为止,为此,您有2个选择:

首先是使用函数:

>>> sum(map(float, s.split(',')))
6.753
>>> sum(float(i) for i in s.split(','))
6.753
第二种方法是使用内和函数:

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

遍历字符串并在执行过程中建立数字,这不太像python,也更费劲,但它可能更符合初学者解决问题的精神,更像是原始代码的延续:

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
这样,数字\u持有者\u字符串将:

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

感谢您提供的替代解决方案。@DumbCoder这些不仅仅是替代方案,这些是完成任务的正确Pythonic方法。最后一个可以说是最具python风格的解决方案,但两者都简洁快速。@Eli Korvigo对一位新来者说,单线解决方案有点先进,但我喜欢that@DumbCoder没有太多:我添加了链接到你可以阅读的关于地图和生成器表达式的参考!你不应该教新手用Python连接字符串。这应该被累积字符列表中的str.join调用所取代。我是否应该在floatnumber\u holder\u string失败的情况下添加异常处理,并解释character=','对于允许在if测试中赋值且缺少一个等于的语言,是如何设置一个坏习惯的,从而导致错误的?如果新手们能一次学会做任何事情的所有最好的方法,以及为什么,在这个星球上的任何地方都不会有任何东西的教程。执行字符串连接。这是一个14个字符字符串的练习。很好,这种特殊的字符串增长方法在新手中是一种非常普遍的坏习惯,这可能是他们认为Python非常慢的主要原因之一。如果floatnumber\u holder\u string失败,他会看到一个异常,但没有任何东西会告诉他字符串串联会损害时间和内存复杂性,我希望我的观点是明确的。不过,复制粘贴代码是另一个坏习惯,我们不理解。嘿,不能通过字符串中的字符计数的新手,请稍等,我会告诉你关于不可变字符串、垃圾收集、对象创建开销、链表数据结构以及为什么它们更容易扩展,然后是你不懂的代码,以避免你不懂的问题。现在,让我们讨论一下在Python中进行迭代,而不是像其他答案一样将其向下推。你跟发电机走了吗?我们现在还是以后再讨论惰性列表评估?总有一种最好的方法。顺便说一句,根据您的描述,您应该用另一个工具来强制您的旧工具:用逗号将字符串分组,然后使用float、sum。这些变化更为重要。