我正在写一个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来增加字符串,然后访问它但我得到一个运行时错误.我想出的解决方案是在函数的开头创建一个空字符串(从我的谷歌搜索似乎是大多数人使用的解决方案),但没有人解释为什么会这样.如果要替换原始字符串,为什么不能返回原始字符串?
解决方法:
您的代码中的问题是您没有操纵原始字符串.您只是替换临时变量char而不是原始字符串.由于字符串在python中是不可变的,您可以尝试使用新字符串而不是替换原始字符串,您可以将字符附加到新字符串.喜欢:
modified_string = ""
for char in string:
#whatever condition
modified_string += #value to be added