我正在编写一个程序,从一行输入的表单中添加两个数字:
数字 + 其他数字
我一直收到“字符串索引必须是整数”错误,但是当我对所有索引调用类型时,它们都显示为整数。
我该如何解决这个问题? 这是代码
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))
请您参考如下方法:
眼前的问题
您可能打算使用 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('+'))
这是一种更简洁的形式;我只是将它隔开,以便于解释。
