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 を定義して文字列をインクリメントし、それにアクセスしようとしましたが、実行時エラーが発生しました。私が思いついた解決策は、関数の先頭に空の文字列を作成することでした(そして、ほとんどの人が使用する解決策であると思われるグーグルから)が、その理由を誰も説明していません。すべての文字を置き換えている場合、元の文字列を返すことができないのはなぜですか?