ROT13はアルファベットで13の文字、それの後の文字と文字を置き換え、簡単な文字置換暗号です。 ROT13はシーザー暗号の一例です。
文字列を取り、Rot13で暗号化された文字列を返す関数を作成します。文字列に数字や特殊文字が含まれている場合は、そのまま返す必要があります。元のRot13 "実装"のように、ラテン/英字の文字だけをシフトする必要があります。
Pythonで「エンコード」を使用することは不正行為とみなされますのでご注意ください。
マイコード:
from string import *
def rot13(message):
melist = list(message)
for i in message:
lpos = index(letters,i)
if i.islower():
print lpos
melist[index(message,i)] = lower(letters[lpos + 13])
elif i.isupper():
try:
melist[index(message,i)] = upper(letters[lpos + 13])
except IndexError:
melist[index(message,i)] = upper(letters[lpos + 13 - 52])
return ''.join(melist)
この事は、あなたがしなければ、たとえば最後の文字
以外の文字列を変換するため正常に動作します:
>>> rot13('test')
'grft'
最後の文字 ' tは変わらないが、どこで間違ったのか分からない。いくつかの助けが大いに評価されるでしょう。
'STRING'モジュールが推奨されていませんです! – linusg
ワットr真剣 – leftunknown
うーん? 'import stringの代わりに' 'mystring.index(i)' 'を使うことをお勧めします。文字列.index( 'mystring'、i) ' – linusg