Python ord()の使い方3つ

Python ord()関数は、特定の文字のユニコード値を返す非常に便利な関数です。この記事では、ord()関数の基本的な使い方と、日常生活で有効に活用できるいくつかの方法を紹介します。また、各シチュエーションで注意すべき点や隠れた機能も一緒に見ていきます。

Python ord()関数とは?

Pythonのord()関数はシンプルですが強力な機能を提供します。文字を入力として受け取り、その文字のユニコード値を返します。ユニコードは全ての文字に固有の数値を与える標準体系で、世界中の文字を表現するのに役立ちます。例えば、英小文字の’a’のユニコード値は97、’A’のユニコード値は65です。

ord()の使い方

ord()関数の基本的な使い方は非常に簡単です。1文字を関数に渡すと、その文字のユニコード値が返されます。以下は基本的な例です。

Python
ord('a')
ord('A')
ord('')
ord('')
ord('')
図1. Python ord()関数で文字のユニコード値を確認
図1. Python ord()関数で文字のユニコード値を確認

このように、ord()は1つの文字に対して即座にそのユニコード値を教えてくれます。しかし注意すべき点として、ord()は必ず1文字しか処理できません。複数の文字を入力するとエラーが発生します。

Python
ord('ab')

2文字以上の文字列を使用した場合、「TypeError: ord() expected a character, but string of length 2 found」というエラーメッセージが表示され、1つの文字のみを使用する必要があることを知らせます。

図2. Python ord()関数に2文字以上の引数を渡した際のTypeError
図2. Python ord()関数に2文字以上の引数を渡した際のTypeError

ユニコードとアスキーコードの違い

ord()関数が返す値はユニコード値です。ここで、ユニコードとアスキーコードの違いを理解しておくことが重要です。

  • アスキー(ASCII): アメリカ標準文字コード体系で、128文字まで表現できます。英字アルファベット、数字、特殊文字だけを含んでおり、世界中の多様な言語を全て表現するには不十分です。
  • ユニコード(Unicode): 世界中の全ての文字を表現できるように設計された標準体系です。韓国語、中国語、アラビア語など様々な言語の文字も含まれています。

したがって、ord()関数は単にアスキー文字を処理するだけでなく、様々な言語の文字をユニコード値に変換することができます。

ord()関数の活用例

アルファベットの順序を取得する

アルファベットの順序を計算する際、ord()関数は非常に役立ちます。例えば、’a’はアルファベットの最初の文字で、’b’は2番目の文字ですが、ord()を使うことでこの順序を簡単に取得できます。

Python
def alphabet_position(letter):
    return ord(letter.lower()) - ord('a') + 1

print(alphabet_position('A'))
print(alphabet_position('B'))
図3. Python ord()関数でアルファベットの順序を取得
図3. Python ord()関数でアルファベットの順序を取得

文字間の距離を計算する

ユニコード値の差を使用して、2つの文字間の「距離」を計算することもできます。例えば、’a’と’c’の間には2文字分の差があります。

Python
def char_distance(char1, char2):
    return abs(ord(char1) - ord(char2))

print(char_distance('a', 'c'))
図4. Python ord()関数で文字間の距離を計算
図4. Python ord()関数で文字間の距離を計算

この方法は、暗号化アルゴリズムや文字列の比較など、様々な応用に使用できます。

パスワードセキュリティの強化

ユーザーのパスワードを評価する際に、文字の組み合わせの複雑さを分析することができます。例えば、パスワードに使用された文字のユニコード値の範囲を計算することで、パスワードの強度を測定することができます。

Python
def password_strength(password):
    strength = 0
    for char in password:
        strength += ord(char)
    return strength

password_strength("abc123")
password_strength("aBc123$")
図5. Python ord()関数でパスワードの強度を測定
図5. Python ord()関数でパスワードの強度を測定

このように、ord()関数を活用してパスワードの多様性を分析し、セキュリティ強化の指標として使用することができます。

注意事項

  • ord()関数は1文字しか処理できません。文字列を入力するとエラーが発生するため、文字列を処理する際は必ず1つずつ分離して使用する必要があります。
  • 返される値は常に整数です。したがって、浮動小数点演算とは関係がありません。

まとめ

Pythonのord()関数は非常にシンプルながらも強力な機能を提供します。1文字を入力として受け取り、その文字のユニコード値を返すこの関数は、アルファベットの順序を取得したり、文字間の距離を計算したりするなど、様々な応用例があります。特に、文字列処理や暗号化などで有用です。ただし、1文字しか処理できないという制限には注意が必要です。

このように、基本的な関数1つで多様な応用が可能なので、Pythonを用いた文字列処理の作業でord()関数を積極的に活用してみてください。

リファレンス

関連ポスト

コメントする