我正在编写一个程序,用于从表单的一行输入中添加两个数字:
number + othernumber
我一直得到“字符串索引必须是整数”错误,但是当我在所有索引上调用type时,它们都显示为整数。
我该如何解决这个问题? 这是代码
S = input()
for position in range(0, len(S)):
if '+'== position:
break
a=int(position)
Sum = (S[0,a])+(S[a, len(S)])
print(Sum)
#print(position)
#print(type(position))
#print(type(len(S)))
#print(type(0))
答案 0 :(得分:7)
您可能打算使用S[0:a]
和S[a:len(S)]
(切片)而不是逗号。
您不必指定前导零或尾随len(S)
- 它们是隐含的。所以你可以使用S[:a]
和S[a:]
来表示同样的事情。
另请注意,S[0:a] + S[a:len(S)]
相当于S
。您可能不希望在其中包含+
,因此您可能希望改为使用S[a+1:len(S)]
。
您不需要手动循环遍历索引 - 已经有.index()
字符串方法来执行此操作:
>>> "hello".index("e")
1
您可以使用split()
函数来获取由+
字符分隔的字符串部分:
S = input()
number_strings = S.split('+')
numbers = [int(n) for n in number_strings]
print sum(numbers)
作为奖励,这适用于任意数量的数字 - 1+2+3
可以正常工作,就像4
一样。
第三行使用所谓的list comprehension来操作列表的每个元素并生成一个新元素 - 在这种情况下,获取字符串列表并生成整数列表。
第四行利用了Python在sum()
函数中的构建,该函数将自动返回一系列项的总和。
请注意,您还可以压缩以上几行:
print sum(int(n) for n in input().split('+'))
这是一个更整洁的形式;我只是将它分开,以便更容易解释。
答案 1 :(得分:0)
0, a
是一个元组。你的意思是通过S[0:a]
?
答案 2 :(得分:0)
你需要修改,到:
Sum = (S[0:a])+(S[a: len(S)])