う、時間とネタがないので、今日はシーザー暗号でも作ってみます。暗号化する関数encryptcaesarと、復号する関数decryptcaesarを以下のように定義する。
caesar.py
def encryptcaesar(str,shift=1): L = list(str) return ''.join(map(chr,map((lambda s: ord(s) + shift),L))) def decryptcaesar(str,shift=1): return encryptcaesar(str,shift*-1)
文字列をリストに直すlist関数と、ある文字のASCIIコードを返すord関数、そしてmap関数を用いると一行で書けてしまいます。
実行結果。
>>> str = encryptcaesar('I love my wife!') >>> str 'J!mpwf!nz!xjgf"' >>> decryptcaesar(str) 'I love my wife!' >>> str = encryptcaesar('Python is great',3) >>> str 'S|wkrq#lv#juhdw' >>> decryptcaesar(str,3) 'Python is great' >>>
いまどきこんなの暗号とは言えないけど、まあ基本ってことで。