プログラミンコンテストでは、数値を文字列に変換させるような問題が出題されることがあります。そんなときに、組み込み関数として用意されている ord( ) と chr( ) を使えば、文字とASCIIコードが簡単に変換できるので、コードの実装が楽になります。
ASCIIコードとは?
それぞれの関数を説明する前に、そもそもASCIIコードとは何かを確認します。
ASCII(アスキー、英: American Standard Code for Information Interchange)は、現代英語や西ヨーロッパ言語で使われるラテン文字を中心とした文字コード。これはコンピュータその他の通信機器において最もよく使われているものである。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
https://ja.wikipedia.org/wiki/ASCII
wikiによると、上のように書かれていますが、ざっくり言えばコンピュータは文字も数字で管理しているといったところでしょうか。実際に “a” というアルファベットは10進数として 97 が割り当てられており、 “A” では 65 が割り当てられています。
それでは実際に文字列をASCIIコードへ変換する関数と、その逆の変換をする関数をそれぞれ紹介していきます。
ord( ) : 文字列をASCIIコードへ変換
mystr = 'a'
print(ord(mystr))
# --> 97
mystr = 'A'
print(ord(mystr))
# --> 65
というように、ord( ) の括弧内に任意の文字を入れれば良いです。ちなみにASCIIコードの定義からも分かりますが、代入する文字が複数の場合はエラーが返されます。
chr( ) : ASCIIコード を文字列へ変換
mynum = 98
print(chr(mynum))
# --> 'b'
mynum = 66
print(chr(mynum))
# --> 'B'
上のコードでは ‘b’ or ‘B’ について変換してみました。
ただ関数を使用するだけなので、割と簡単に理解できたかと思います。実際のプログラミングコンテストでは、10 を ‘ j ‘ とする 等の設定がなされる場合があります。その場合は ASCIIコードで ‘j’ は107 となりますので chr(10 + 97) とかのようにしてやれば良いですね。