Python で文字をインクリメントする方法

文字のインクリメントとは?

C 言語や Java などの他の多くのプログラミング言語では、文字型は ASCII 文字コードそのもので保存されています。 このため、直ちに数値型にキャストでき、その結果「char 型の文字に数字の 1 を足す」という操作ができます。

ASCII 文字コードはアルファベットの部分は、'A' から 'Z' まで順番に並んでいますから、例えば Java を使うと次のようなコードで、 A から Z までの文字を表示できます。

  // Java
  for (char ch = 'A'; ch <= 'Z'; ch += 1) { 
    System.out.print(ch); // 1文字出力
  }

  // 結果
  //ABCDEFGHIJKLMNOPQRSTUVWXYZ

このように、文字に数字を足すような操作は Python ではどうすれば良いでしょうか。

ord() で文字から Unicode のコードを取得する

Python のビルトイン関数である ord() を使うと、引数として渡した文字の Unicode のコードが整数値で返ります。

code = ord('A')
print(code)  # 65
print(hex(code))  # 0x41

大文字のアルファベットの A は Unicode のコードは U+0041 です。確かにコードが取れました。

chr() で Unicode のコードから文字を取得する

Python のビルトイン関数である chr() を使うと、Unicode の文字コードから文字が取得できます。

Unicode の U+0041 は大文字のアルファベットの A です。このことから、文字を取得すると次のようになります。

ch = chr(0x0041)
print(ch)  # A

文字をインクリメントして A から Z まで出力する

ord() 関数と chr() 関数を使うことで、 Python でも文字 A から Z までを順番に出力できます。

code = ord('A')
while True:
    ch = chr(code)
    print(ch, end='')
    if ch == 'Z':
        break
    code += 1

# ABCDEFGHIJKLMNOPQRSTUVWXYZ

ここでは while 文によるループを行い、if 文を用いて文字が Z であるかチェックして、 もし Z の場合は break を使って while ループを抜けています。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門