[英]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.