私は楽しみのために言葉をごちゃまぜにするプログラムを作っていますが、障害にぶつかりました。文字列内のすべての文字を切り替えようとしていますが、その方法がよくわかりません (hello = ifmmp)。私は周りを見回しましたが、この特定の質問に対する答えを見つけることができませんでした。どんな助けでも素晴らしいでしょう!
1430 次
4 に答える
0
あなたが後にしているように見える「スクランブル」は、Caesar's cipherと呼ばれ、右シフトは 1 です。次の Python は、あなたが求めているものを達成します:
def caesar(str):
from string import maketrans
fromalpha = "abcdefghijklmnopqrstuvwxyz"
# Move the last 1 chars to the start of the string
toalpha = fromalpha[1:] + fromalpha[:1]
# Make it work with capital letters
fromalpha += fromalpha.upper()
toalpha += toalpha.upper()
x = maketrans(fromalpha, toalpha)
return str.translate(x)
一般的なケースに興味がある場合は、この関数で十分です。(シーザー暗号は、右シフトではなく左シフトで表現するのが慣例であることに注意してください。)
def caesar(str, lshift):
from string import maketrans
fromalpha = "abcdefghijklmnopqrstuvwxyz"
toalpha = fromalpha[-lshift:] + fromalpha[:-lshift]
fromalpha += fromalpha.upper()
toalpha += toalpha.upper()
x = maketrans(fromalpha, toalpha)
return str.translate(x)
于 2013-10-30T02:39:59.217 に答える