在做了几年的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
是一个整数,我不明白为什么会出现这个错误。也许我想得太多了,就像我在做电脑识别。在
您正在迭代字符串,因此每个
i
都绑定到一个字符,而不是一个整数。这是因为Pythonfor
循环是{a1},与C不同只需直接使用该字符,无需索引回字符串。Python字符串也是不可变的,因此不能替换string对象中的字符。生成新对象:
如果必须为某个对象生成索引,则通常使用^{} type 为您生成索引,或者使用^{} 在循环中同时生成索引和值本身。在
另外,请注意,在循环之前,您不需要将
for
循环目标名称设置为默认值,除非您需要处理循环iterable为空并且希望在循环之后使用目标名称的情况。换句话说,你的i = 0
是完全多余的。在相关问题 更多 >
编程相关推荐