Pythonでプログラミングをしていると、文字をASCIIコードに変換する必要が出てくることがあります。そんなときに便利なのが`ord()`関数です。この記事では、`ord()`関数の使い方と注意点について詳しく解説します。

ord()関数の基本的な使い方

`ord()`関数は、1文字の文字列を受け取り、そのUnicodeコードポイント(整数)を返します。

print(ord('A'))  # 65
print(ord('a'))  # 97
print(ord('1'))  # 49

よくあるエラーと解決方法

エラー1: TypeError: ord() expected a character, but string of length 2 found

このエラーは、`ord()`関数に2文字以上の文字列を渡したときに発生します。

# エラーが発生するコード
print(ord('AB'))  # TypeError

# 正しいコード
print(ord('A'))  # 65

エラー2: TypeError: ord() expected string of length 1, but int found

このエラーは、数値を直接`ord()`関数に渡したときに発生します。

# エラーが発生するコード
print(ord(65))  # TypeError

# 正しいコード
print(ord('A'))  # 65

実践的な使用例

1. 文字の比較

def is_uppercase(char):
    return 65 <= ord(char) <= 90

print(is_uppercase('A'))  # True
print(is_uppercase('a'))  # False

2. 文字列の暗号化

def simple_encrypt(text):
    return ''.join([chr(ord(c) + 1) for c in text])

print(simple_encrypt('Hello'))  # Ifmmp

chr()関数との組み合わせ

`ord()`の逆の機能を持つ`chr()`関数と組み合わせることで、文字とコードポイントの相互変換が可能です。

ascii_code = ord('A')  # 65
character = chr(ascii_code)  # 'A'
print(character)  # A

注意点

  • `ord()`関数は1文字の文字列のみを受け付けます
  • 日本語などの非ASCII文字にも対応していますが、返される値は Unicode コードポイントになります
  • エンコーディングの問題を避けるため、Unicode文字列を使用することをお勧めします

まとめ

`ord()`関数は、文字をASCIIコードに変換する際の基本的な関数です。1文字のみを扱うという制限がありますが、文字の処理や比較、暗号化などで幅広く活用できます。エラーの多くは入力値の形式に関するものなので、1文字の文字列を渡すように注意することで解決できます。