Python中字符串的总和

问题描述 投票:1回答:3

我正在使用John V. Guttag的书“使用Python进行计算和编程简介”来学习编程。上面有一个练习,内容如下:

'手指运动:让s是一个字符串,其中包含一系列以逗号分隔的十进制数字,例如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:字符串索引必须是整数,而不是元组

我试图在线寻求解决方案,但只找到了行之有效的解决方案但不适用于我现在已经拥有的内容。有帮助吗?

python string sum slice
3个回答
1
投票

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

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

逗号通常创建元组。

相反,您想在此处使用冒号作为切片:

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

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

s[l:c]

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


0
投票

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

接下来,您应该至少在开始时对它的每个部分进行注释,以使您清楚每一行在做什么。

您不需要在多个位置检查',',保留一个变量。


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)
© www.soinside.com 2019 - 2024. All rights reserved.