python - 为什么我的单词中的字符不在字母表中移动一个位置?

标签 python

我正在尝试编写一个程序,它接受一个单词或句子,然后将每个字符在字母表中移动一个位置。 这是我最小的可重现示例:

alphabet = []
alphabet = [chr(x) for x in range(ord('a'), ord('z') +1)]

word = 'hello' 
new_word = [ ] 

for char in word:
    if char in alphabet:
        new_pos = alphabet.index(char) + 1
        if new_pos > len(alphabet):
            new_pos %= len(alphabet)
        new_word.append(alphabet[new_pos])
    else:
        continue

我的问题是:为什么这不会将单词的字符在字母表中移动一位?

最佳答案

您可以改为使用此列表推导式:

word = 'hello'
new_word = ''.join([chr(ord(w)+1) if w.lower()!='z' else chr(ord(w)-25) for w in word])
print(new_word)

输出:

ifmmp


您还可以:

new_word = ''.join([chr(ord(w)+1) if w not in ['z','Z'] else chr(ord(w)-25) for w in word])

关于python - 为什么我的单词中的字符不在字母表中移动一个位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62863426/

相关文章:

python - 循环代码并按 0 结束循环

python - 如何在 python 代码中指定 “tab”?

python - 如何使用 Python 图像库(PIL/Pillow)检测图像是否为渐进式 JPEG?

python - 按字母数字列对 PySide.QtGui.QTreeWidget 进行排序

python - 是否有更 Pythonic 的方法来测试对象是否为数字或返回其值?

python - 有关在我的计算机中安装 PCL 的问题

python - BeautifulSoup 将表头复制到页脚

python - 如何用 python 编写 OS X Finder 注释?

python - 将列标题转换为行值

python - AWS Elasticsearch批量插入延迟急剧增加