我是python的新手。我想从控制台获取输入并对其进行加密。我想像这样更改输入字符串的字母然后输出。
a=e,
b=g,
c=p,
d=f,
e=i,
f=k,
g=q,
h=u,
i=h,
j=v,
k=z,
l=w,
m=j,
n=r,
o=d,
p=s,
q=t,
r=n,
s=c,
t=l,
u=y,
v=x,
w=b,
x=m,
y=o,
z=a
因此,如果我输入“ Dog”,则应输出“ Dog = Fdq”,如果输入“ python”,则应输出“ python = soludr”。我该怎么办?
答案 0 :(得分:3)
这是使用字典的好地方。
您可以先声明字典:
translateDict = {'a' : 'e',
'b' : 'g',
#etc
'z' : 'a'}
在许多方面,字符串实际上只是字符列表。因此,您可以定义一个对每个字符进行操作的函数:
def encryptWord(word):
return ''.join([translateDict[x] for x in word])
这是在使用列表推导。有效地,该函数创建了一个字符列表:具体地说,对于输入单词中的每个字符,它会在字典中查找其对应的值,并(依次)从这些结果中创建一个列表。 join
函数通过连接一个字符串或字符串列表,并在每个字符串之间添加''
字符串(在这种情况下,在每个字符之间不添加任何内容)来创建字符串。
如果您在字典中放入不包含字母的字符串,则可能会导致问题,但是您应该可以从中使用。
答案 1 :(得分:1)
我同意最简单的方法是使用字典,请参见下面的另一个示例:
def encrypt(word):
keys = {
'a':'e',
'b':'g',
'c':'p',
'd':'f',
'e':'i',
'f':'k',
'g':'q',
'h':'u',
'i':'h',
'j':'v',
'k':'z',
'l':'w',
'm':'j',
'n':'r',
'o':'d',
'p':'s',
'q':'t',
'r':'n',
's':'c',
't':'l',
'u':'y',
'v':'x',
'w':'b',
'x':'m',
'y':'o',
'z':'a'
}
encrypted_list = []
for letter in word:
encrypted_list.append(keys[letter])
return ''.join(encrypted_list)
if __name__ == "__main__":
text = input("Type the word you wanna encrypt: ")
print(encrypt(str(text).lower()))
该示例未刻意使用列表推导,因为我们已经有了另一个示例。