設問
与えられた文字列の各文字を,以下の仕様で変換する関数cipherを実装せよ.
英小文字ならば(219 – 文字コード)の文字に置換
その他の文字はそのまま出力
この関数を用い,英語のメッセージを暗号化・復号化せよ.
“暗号化”、”復号化”という名目になっていますが、今回のポイントはord関数とchr関数の使い方です。
1)ord関数
引数で指定した文字列のアスキーコードを取得します。
2)chr関数
引数で指定したアスキーコードから文字を取得
10行目の「chr(219 – ord(val))」が今回の使用箇所です。
ord関数で変換したアスキーコードを219から減算します。(暗号化)
減算した結果をchr関数で再び文字列を取得しています。(復号化)
#coding: utf-8
def cipher(target):
result = ''
for val in target:
#半角小文字の場合
if val.islower():
#ord:ユニコードを数値に
#chr:数値をユニコードに
result += chr(219 - ord(val))
else:
result += val
return result
val = 'Diet lowers age of adulthood to 18 from 20'
result = cipher(val)
result2 = cipher(result)
print('元の値:' + val)
print('暗号化:' + result)
print('復号化:' + result2)
実行結果
元の値:Diet lowers age of adulthood to 18 from 20
暗号化:Drvg oldvih ztv lu zwfogsllw gl 18 uiln 20
復号化:Diet lowers age of adulthood to 18 from 20
開発環境
Windows10
Python 3.7.3
Visual Studio Code 1.33.1