如何修复显示为“{”而不是 'a' 的替换字母,这正是它的意思

How to fix replaced letter showing as '{' instead of 'a' which is what its meant to show

我正在学校参加一个名为 Grok 的比赛。这是一场 Python 比赛。我想在 char 循环中用 'a' 替换字母 'z' 。但是当我输入一个带有字母 z 的单词时,该字母显示为 { 而不是 a.

text = input('Word? ')


for char in text:
  if 'z' in char:
    new_char = chr(ord(char) + 1)
    new_char.replace('z', 'a')
  else:
    new_char = chr(ord(char) + 1)


  print(new_char, end='')

如果我输入像 Pizza 这样的词,z 的字母将替换为 { 而不是 a,例如 pi{{a,当我希望它生成 Piaaa 时

如何避免循环并仅使用 str.replace:

text = text.replace('z', 'a')

这会将 text 中出现的所有 'z' 替换为 'a'

我觉得有问题

new_char = chr(ord(char) + 1)

在那行之后尝试打印 new_char,你就会知道。

for char in text:
  if 'z' in char:
    new_char = chr(ord(char) + 1)
    print(new_char)
    new_char.replace('z', 'a')
  else:
    new_char = chr(ord(char) + 1)


  print(new_char, end='')

发生这种情况是因为 ord('z') 是 122 而 ord('{') 是 123。像

new_char = char(ord('a') + (ord(char) - ord('a') + 1) % 26)

应该可以。

感谢大家的帮助,我根据您的回答对代码进行了一些编辑,这似乎对我有用:

  text = input('Word? ')

# This loop will encrypt one letter at a time.
for char in text:
  # Encrypt char here!
  if 'z' in char:
    new_char = char.replace('z', 'a')
  else:
    new_char = chr(ord(char) + 1)


  # Print the new encrypted letter.
  print(new_char, end='')

非常感谢大家!