我正在学习使用这本书进行编程"使用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:字符串索引必须是整数,而不是元组
我曾尝试在线寻求解决方案,但只找到了解决方案,但不是我现在的内容。 有什么帮助吗?
答案 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)