Python中字符串部分的总和

时间:2015-10-11 16:10:18

标签: python string sum slice

我正在学习使用这本书进行编程"使用Python计算和编程简介"作者:John V. Guttag。有一个练习就是说:

  

'手指练习:让我们成为一个包含序列的字符串   用逗号分隔的十进制数,例如,s =' 1.23,2.4,3.123'。写   一个程序,用于打印s中的数字总和。

我的尝试是:

#Finger exercise [MIT] PAGE 42     12:50 | 11.10.2015
s = ','+raw_input('Enter a string that contains a sequence of decimal numbers separated by commas, e.g. 1.23,2.4,3.123): ')+','
    total = 0
    for l in range(0,len(s)):
        if s[l] == ',':
            c = l + 1
            while s[c] != ',':
                c = c + 1
                if s[c] == ',':
                    total = total + int(s[int(l),int(c)])
print total

但它一直显示此错误

  

TypeError:字符串索引必须是整数,而不是元组

我曾尝试在线寻求解决方案,但只找到了解决方案,但不是我现在的内容。 有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

在此处访问字符串项时,您正在创建一个元组:

s[int(l),int(c)]

逗号通常会创建元组。

相反,你想在这里使用冒号:

s[int(l):int(c)]

请注意,这两个变量都已经是整数,因此您实际上并不需要转换它们:

s[l:c]

另请注意,虽然您接受浮点数作为输入,但您正在对整数值求和。因此,您需要添加int(s[l:c]),而不是添加float(s[l:c])

答案 1 :(得分:0)

首先,在第一个逗号之前没有处理任何内容。

接下来,您应该至少在最初评论它的每个部分,以清楚每条线路的作用。

你不应该检查''在多个地方,保留一个变量。

答案 2 :(得分:0)

我发现了一个解决方案,希望它有用:

s = "1.23, 2.4, 3.123"

news = s.split(",")

total = 0 

for string in range(len(news)):    
    total += float(news[string])

print(total)