Python 更改单词编码器和解码器以提供可识别的空格和标点符号

Python 更改单词编码器和解码器以提供可识别的空格和标点符号,python,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)

第二个函数编码一个单词阶段,第三个函数解码相同的单词功能,但它不会跳过空格和标点符号

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")

目前,空格字符既不是alpha字符也不是您的密钥字母-如果您不希望对空格进行加密,请将其添加到这两个字符的相同位置


请注意,您的代码当前忽略了一个事实,即要编码的字符串中有空格,但键字母中没有空格。最好在代码中明确说明这一点-检查字母是否存在,而不是简单地忽略错误。

此时空格字符既不在alpha中也不在keyletters中-如果不希望对空格进行加密,则将其添加到这两个字母的相同位置


请注意,您的代码当前忽略了一个事实,即要编码的字符串中有空格,但键字母中没有空格。最好在代码中明确说明这一点-检查字母是否存在,而不是简单地忽略错误。

如果字母不是字母,会发生什么?确切地说,它没有被添加,因为它在
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

如果
字母不按字母顺序排列,会发生什么情况?确切地说,它没有被添加,因为它在
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