我是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 == ',':
请有人帮助我怎么走?
答案 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.