所以我试着做一个代码,将一个单词中的每一个字母移回字母表中的若干个字母(最后换行)例如,如果我想移动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
最佳答案
你可以这样开始
def move(word, shift):
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
return "".join([alphabet[alphabet.find(i)-shift] for i in word])
基本上,这个列表理解构造了一个单字母列表然后,通过.find方法找到字母表中字母的索引。(index-shift)是从字母表中提取的所需的新索引结果列表将再次合并并返回。
注意,它显然不适用于小写输入字符串(如果您希望使用str.upper方法)实际上,这个词应该只包含字母表中的字母对于句子,这种方法需要区别对待空白。