【发布时间】:2015-12-07 22:50:54
【问题描述】:
我正在尝试创建一个编码/解码函数,该函数接受输入字符串并通过将字母与键匹配来将每个字母切换到字典键中的相应值。它基本上是一个 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'}
谁能告诉我为什么我的函数没有返回翻译后的句子?
【问题讨论】:
-
正确使用
for循环,无需索引。顺便说一句,Key和Key.keys是什么? -
print A.translate(string.maketrans(*zip(*Key.items()))) -
@Joran Beasley 哇,太有效率了!
*zip(*Key.items())是做什么的?str.maketrans的文档会引导我(可能不正确)到str.maketrans(Key)。 -
d.items()将为您提供[(key,val),(key,val),...]的列表...然后当您调用zip(*...)时,将为您提供一对新的列表[(key,key,key),(val,val,val)]...前面的星号将其解压缩到 string.maketrans 期望的 2 个参数中……除了我遗漏了一部分之外:( -
应该是
string.maketrans(*map(''.join,zip(*Key.items())))
标签: python loops dictionary iteration