繁体   English   中英

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

[英]string indices must be integers error in python, but indices are integers

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

数字+其他数字

我不断收到“字符串索引必须是整数”错误,但是当我在所有索引上调用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)) 

眼前的问题

您可能打算使用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

第三行使用所谓的列表推导列表的每个元素进行操作并生成一个新的列表-在这种情况下,将获取一个字符串列表并生成一个整数列表。

第四行利用Python的build in sum()函数,该函数将自动返回一系列项目的总和。

请注意,您也可以压缩以上几行:

print sum(int(n) for n in input().split('+'))

这是一种更加整齐的形式; 我只是将其间隔开以便于解释。

0, a是一个元组。 您是不是要通过S[0:a]对序列进行切片

您需要将修改为:

Sum = (S[0:a])+(S[a: len(S)])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM