TypeError:字符串索引必须是整数

2024-07-08 07:51:50 发布

您现在位置:Python中文网/ 问答频道 /正文

在做了几年的C代码之后,我回到了Python,我在训练自己恢复Python编码习惯时有点困惑。在

我试着运行这段非常简单的小代码,但是我总是遇到标题中描述的类型错误。我搜索了很多东西,但还是搞不清这是什么问题:

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是一个整数,我不明白为什么会出现这个错误。也许我想得太多了,就像我在做电脑识别。在


Tags: and代码in标题类型编码forif
1条回答
网友
1楼 · 发布于 2024-07-08 07:51:50

您正在迭代字符串,因此每个i都绑定到一个字符,而不是一个整数。这是因为Python for循环是{a1},与C不同

只需直接使用该字符,无需索引回字符串。Python字符串也是不可变的,因此不能替换string对象中的字符。生成新对象:

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)

如果必须为某个对象生成索引,则通常使用^{} type为您生成索引,或者使用^{}在循环中同时生成索引值本身。在

另外,请注意,在循环之前,您不需要将for循环目标名称设置为默认值,除非您需要处理循环iterable为空并且希望在循环之后使用目标名称的情况。换句话说,你的i = 0是完全多余的。在

相关问题 更多 >

    热门问题