Skip to main content
 首页 » 编程设计

python之python 中的字符串索引必须是整数错误,但索引是整数

2025年05月04日23qq号

我正在编写一个程序,从一行输入的表单中添加两个数字:

数字 + 其他数字

我一直收到“字符串索引必须是整数”错误,但是当我对所有索引调用类型时,它们都显示为整数。

我该如何解决这个问题? 这是代码

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('+')) 

这是一种更简洁的形式;我只是将它隔开,以便于解释。