2013-11-03 269 views
0

代碼:我如何做一個簡單的Python加密器

a=26 
b=25 
c=24 
d=23 
e=22 
f=21 
g=20 
h=19 
i=18 
j=17 
k=16 
l=15 
m=14 
n=13 
o=12 
p=11 
q=10 
r=9 
s=8 
t=7 
u=6 
v=5 
w=4 
x=3 
y=2 
z=1 
print ("Please print string:") 
str1 = str(raw_input(">")) 
print str1 

但我怎麼做它轉換str1成以上的整數?順便說一句,我非常喜歡新手。

回答

0

顯然,我不能使用內建的string.translate來做到這一點,但以下2個工作正常。

import string 
# Construct a dictionary for required translation 
translation = {} 
for index, char in enumerate(string.ascii_lowercase): 
    translation[char] = 26 - index 

# Function to translate given string 
def translate(user_string): 
    return "".join([str(translation[c]) for c in user_string]) 

user_string = raw_input("Enter your string - ") 
print translate(user_string) 

注 - string.ascii_lowercase'abcdefghijklmnopqrstuvwxyz'

如果你不想翻譯轉換爲字符串,你可以做

from __future__ import print_function 
import string 

translation = {} 
for index, char in enumerate(string.ascii_lowercase): 
    translation[char] = 26 - index 

user_string = raw_input("Enter your string - ") 
for c in user_string: 
    print(translation[c],end="") 
2

一個襯墊,因爲我很無聊:

print ''.join([str(123-ord(l))for l in str(raw_input("Print String:\n>"))]) 

但是,這可能更多你想要的:

print ("Please print string:") 
str1 = str(raw_input(">")) 

offset = 1 
values = [ord(l) + offset for l in str1] 

print ''.join([chr(v) for v in values]) 

這使得該字符串由您加密常數的偏移量中的每個字母的ASCII值的列表,然後將它們轉換回到字符(今偏移)並加入列表轉換成字符串。

還是以函數形式:

print ("Please print string:") 
str1 = str(raw_input(">")) 

def encrypt(string,offset): 
    return ''.join([chr(ord(l) + offset) for l in string]) 

print encrypt(str1,2) 

你可以調用加密的任何字符串和您所需的值偏移了。調用您的抵消值加密否定(1去-1,等)來解密它。

0

問題已經回答了,但總的來說,如果你正在尋找能繼續使用你寫的代碼,你會想使用字典:

letters = {"a": 26, "b": 25...} 
return ''.join([letters[item] for item in str(raw_input("Print String:\n>"))])