第二个函数编码一个词相,第三个函数解码相同的单词函数,但它不跳过空格和标点符号。
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或关键字中-如果您不希望空格加密,则将其添加到两者的相同位置
注意:你的代码目前忽略了空格存在于要编码的字符串中而不在关键字中的事实。在代码中明确说明这一点是个好主意——检查字母是否存在,而不是简单地忽略错误。
如果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