文字列のインデックス操作と連結
最も古い暗号手法のひとつであるシーザー暗号を見ていきます。これは、与えられたアルファベット上で、メッセージ中の各文字を一定数だけ後ろにずらす(シフトする)単純な仕組みです。例えば英語のアルファベットに対して、'xyz' を1文字シフトすると 'yza' になり、復号ではその逆方向にシフトします。このとき、'z' は 'a' に循環する点に注意してください。
したがって、暗号化/復号には2つの引数、すなわちテキストとシフト量を表す整数キー(上の例では key = 1)が必要です。
あなたの課題は、alphabet 文字列に英語のアルファベットが格納されているときに使える暗号化関数を作成することです。
この演習はコースの一部です
Pythonでコーディング面接問題を練習する
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def encrypt(text, key):
encrypted_text = ''
# Fill in the blanks to create an encrypted text
for char in text.lower():
idx = (alphabet.____(____) + ____) % len(____)
encrypted_text = encrypted_text + alphabet[idx]
return encrypted_text
# Check the encryption function with the shift equals to 10
print(____("datacamp", ____))