所以我试着做一个代码,将一个单词中的每一个字母移回字母表中的若干个字母(最后换行)例如,如果我想移动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方法)实际上,这个词应该只包含字母表中的字母对于句子,这种方法需要区别对待空白。

10-08 19:52