pythonでアルファベットからなるリストを作る方法
昨日からCheckiOというプログラミングのpythonのゲームで遊んでいます。
先程「シーザー暗号を作れ」という問題が出ました。
シーザー暗号は単一換字式暗号の一種で、平文の各文字を、辞書順に3文字分シフトして暗号文を作る暗号である Wikipediaより
要はアルファベットの全文字を何文字かずつずらして作った暗号です。例えば3文字ずらすならa→d、b→eのようになります。
この問題を解くためにアルファベットのリストを作ろうとしたんですが、「"」と「,」を何十回も押すのがだるすぎたんで簡単に作る方法を調べました
結論から言うと組み込み関数のchrを使います
chr(整数):Unicodeコードポイントがその数である文字列を返す。
組み込み関数についてはこちらの記事も参考にしてください。
- 大文字のアルファベットのリスト["A","B",..."Z"]
[chr(i) for i in range(65,91)]
- 小文字のアルファベットのリスト["a","b",..."z"]
[chr(i) for i in range(97,123)]
ポイントは
- リスト内包表記を使うこと
- それぞれの文字にUnicodeコードポイントという数字があること(この数字は組み込みのord()関数を用いて知ることができる)
です。ちなみに大文字の方がコードポイントが若いので大文字と小文字の要素を持つリストにsort()関数を使うと1文字目が大文字のものの方が先に来ます。