簡體   English   中英

TypeError:字符串索引必須是整數

[英]TypeError : string indices must be integers

經過幾年的C代碼編寫工作,我回到了Python。在訓練自己恢復Python編碼習慣的過程中,我有些困惑。

我試圖運行這段非常簡單的代碼,但是我一直收到標題中所述的TypeError。 我已經搜索了很多,但無法弄清楚這是什么問題:

def toLower(pStr):

i = 0

for i in pStr:
    if ord(pStr[i]) >= 65 and ord(pStr[i]) <= 90:
        pStr[i] = chr(ord(pStr[i])+28)

return pStr

testStr = "TEST STRING"

print(toLower(testStr))

考慮到i是一個整數,我不明白為什么會收到此錯誤。 也許我覺得我好像在做C IDK。

您正在遍歷字符串,因此每個i都綁定到單個字符, 而不是整數。 那是因為Python for循環是Foreach構造 ,與C不同。

只需直接使用該字符,而無需索引回字符串。 Python字符串也是不可變的 ,因此您不能替換字符串對象中的字符。 新建一個對象:

def toLower(pStr):
    output = []
    for char in pStr:
        if ord(char) >= 65 and ord(char) <= 90:
            char = chr(ord(char)+28))
        output.append(char)
    return ''.join(output)

如果必須為某些內容生成索引,則通常可以使用range()類型為您生成索引,或者使用enumerate()在循環中生成索引值本身。

另外,請注意,除非需要處理循環iterable為空並且希望在循環之后使用目標名稱的情況,否則不需要在循環之前將for循環目標名稱設置為默認值。 換句話說,您的i = 0完全是多余的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM