簡體   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