我正在编写一个ROT13函数,但是我不理解为什么以下代码不能正常工作:
def ROT(string):
# y = 0
for char in string:
x = ord(char)
if 97 <= x < 110 or 65 <= x < 78:
# string[y]=char.replace(char, chr(x+13))
char=char.replace(char, chr(x+13))
print(char)
# y+=1
elif x >= 110 or 78 <= x < 91:
# string[y]=char.replace(char, chr(x-13))
char=char.replace(char, chr(x-13))
print(char)
# y+=1
return string
string = ROT('Hello, lorem ipsum dolor sit amet')
print(string)
函数的调用只是打印原始字符串。如您在上面的注释行中所见(如果阅读起来有些困难,我深表歉意),我试图定义一个变量y来逐个遍历字符串,然后访问它,但我得到了一个运行时错误。 我想出的解决方案是在函数开头创建一个空字符串(从我的搜索结果来看,这似乎是大多数人使用的解决方案),但没有人解释为什么。 如果您要替换字符串中的每个字符,为什么不能返回原始字符串?