改变一个单词的编码器和解码器,使其具有可识别的空格和标点符号

2024-09-29 03:38:26 发布

您现在位置:Python中文网/ 问答频道 /正文

第二个函数编码一个字的阶段,第三个解码相同的字功能,但它不跳过空格和标点符号。你知道吗

def buildCipher(key):
    alpha="abcdefghijklmnopqrstuvwxyz"
    rest = ""
    for letter in alpha:
      if not(letter in key):
        rest = rest + letter
    print key+rest

def encode(string,keyletters):
    alpha="abcdefghijklmnopqrstuvwxyz"
    secret = ""
    for letter in string:
      index = alpha.find(letter)
      secret = secret+keyletters[index]   
    print secret

def decode(secret,keyletters):
    alpha="abcdefghijklmnopqrstuvwxyz"
    clear = ""
    for letter in secret:
      index = keyletters.find(letter)
      clear = clear+alpha[index]

encode("this is zest!!!" , "earthbcdfgijklmnopqsuvwxyz")
#gives me sdfqfqzhqs
#need it to give me sdfq fq zhqs!!!
decode("tdfq fq zhqs!!!" , "earthbcdfgijklmnopqsuvwxyz")

Tags: keyinalpharestforsecretstringindex
2条回答

此时,空格字符既不是alpha字符,也不是keyletters字符——如果您不希望对空格进行加密,请将其添加到两者的相同位置。你知道吗

请注意,您的代码当前忽略了这样一个事实:要编码的字符串中有空格,而键字母中没有空格。在代码中明确这一点是个好主意——检查字母是否存在,而不是简单地忽略错误。你知道吗

如果letter不是字母顺序会发生什么?确切地说,它没有被添加,因为它在alpha中找不到它的索引。您需要有一个if/else语句:

def encode(string,keyletters):
  alpha="abcdefghijklmnopqrstuvwxyz"
  secret = ""
  for letter in string:
    if letter in alpha:
      index = alpha.find(letter)
      secret = secret+keyletters[index]
    else:
      secret = secret + letter
  print secret

相关问题 更多 >