我正在尝试创建一个编码/解码函数,它接受一个输入字符串,并通过匹配一个键来将每个字母切换到字典Key中的相应值。它基本上是一个ROT-13密码。
def Encode_Decode(A):
A=list(A)
for n in range(0,len(A),+1):
if A[n]==Key.keys:
map(Key.values(),A[n])
print("This translates to: "+"".join(A))
Encode_Decode("Hello there")
我使用字典将字母表中的键值分配给字母13个字母
Key= {'a':'n','b':'o','c':'p','d':'q','e':'r','f':'s',
'g':'t','h':'u','i':'v',
'j':'w','k':'x','l':'y','m':'z','n':'a',
'o':'b','p':'c','q':'d','r':'e'
,'s':'f','t':'g','u':'h','v':'i','w':'j',
'x':'k','y':'l','z':'m','A':'N',
'B':'O','C':'P','D':'Q','E':'R','F':'S',
'G':'T','H':'U','I':'V','J':'W',
'K':'X','L':'Y','M':'Z','N':'A','O':'B',
'P':'C','Q':'D','R':'E','S':'F',
'T':'G','U':'H','V':'I','W':'J',
'X':'K','Y':'L','Z':'M'}
有谁可以告诉我为什么我的功能不会返回翻译的句子?
答案 0 :(得分:1)
这不是唯一的问题,但......我想你想要:
if A[n] in Key:
而不是
if A[n]==Key.keys:
顺便说一下,键是dict的一个令人困惑的名字。
我知道这只是一个评论,不是一个完整的答案,但我不知道如何格式化评论:)
答案 1 :(得分:1)
如果所有可能的字符都在Key
中,您可以写下:
def Encode_Decode(A):
A = map(Key.get, A)
print("This translates to: "+"".join(A))
但是,在测试字符串中,有一个空格,Key.get(' ')
会返回None
。如果序列中有"".join(A)
None
将失败
您可以通过将默认参数传递给Key.get
def Encode_Decode(A):
A = (Key.get(x, x) for x in A)
print("This translates to: "+"".join(A))
Key.get(x, x)
表示如果x
不在字典中,只需使用x
,那么空格和其他字符将保持不变