def rot_decoder(x):
    new =[]
    d = {'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 i in x:
        new.append(d.get(i,i))
    print ''.join(new)
    
rot_decoder('Pnrfne pvcure? V zhpu cersre Pnrfne fnynq!')

# Our decoder function can also encode the message since we have 26 characters. But in case if isn't you can use below strategy. 
def rot_encoder(x):
    key_inverse = { v:k for k,v in d.items()} 
    for i in x:
        new.append(d.get(i,i))
    print ''.join(new)
暗号学においてシーザー暗号とは、平文の各文字をアルファベットのある一定数下の文字に置き換えるという、非常に単純な暗号化技術であす。例えば、3をシフトすると、AはDに、BはEに、といった具合である。この方法はジュリアス・シーザーにちなんで命名されました。 ROT-13（"rotate by 13 places"）は、シフトが13のシーザー暗号の例として広く使われています。Pythonでは、ROT-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' }. 

pythonを用いて、ROT-13のエンコーダ/デコーダを実装して下さい。それができたら、次の秘密メッセージを読むことができるようになります：

  Pnrfne pvcure? V zhpu cersre Pnrfne fnynq！

英語には26の文字があるので、ROT-13プログラムは英語で書かれたテキストのエンコードとデコードの両方ができることに注意してください。