【发布时间】:2017-06-20 04:14:45
【问题描述】:
所以我正在尝试编写一个代码,它将单词中的每个字母向后移动字母表中的多个字母(在结尾处环绕)。例如,如果我想移位 2 并输入 CBE,我应该得到 AZC。或约翰进入 HMFL。我有一个代码只能用于一个字母,我想知道是否有办法为 python 做一个嵌套的 for 循环(有效?)
def move(word, shift):
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
original = ""
for letter in range(26, len(alphabet)):
if alphabet[letter] == word: #this only works if len(word) is 0, I want to be able to iterate over the letters in word.
original += alphabet[letter-shift]
return original
【问题讨论】:
-
这对 1 个字母有什么作用?
-
这仅适用于一个字母,因为您的范围从
26开始,因此在字母表中只匹配一次,并且条件只会匹配一次。 -
Scott 如果我调用 print move("B", 2) 我会按预期得到 Z。 :)
-
您在 Caesar 密码算法中实现的内容。网上有很多解释。见:rosettacode.org/wiki/Caesar_cipher#Python
标签: python algorithm for-loop iteration