南アフリカのID番号検証コードとその使い方


  1. バリデーションコードの計算方法: 南アフリカのID番号は、生年月日、性別、市民権の情報を含んでいます。バリデーションコードは、この情報に基づいて計算されます。具体的な計算方法は次の通りです:

    a. ID番号の最後の数字を除いた残りの数字を2つのグループに分けます。 b. 偶数番目の数字を2倍し、2桁の数字が生成された場合はそれらの合計を取得します。 c. 奇数番目の数字をそのまま使用します。 d. 2つのグループの数字の合計を計算します。 e. 合計を10で割った余りを計算します。 f. 10から余りを引いた値がバリデーションコードとなります。

  2. バリデーションコードのチェック: ID番号とそのバリデーションコードを入力として受け取り、正しい組み合わせかどうかをチェックする関数を作成することができます。以下はPythonでの例です:

def validate_id_number(id_number):
    id_number = str(id_number)
    check_digit = int(id_number[-1])
    id_digits = [int(digit) for digit in id_number[:-1]]
    even_digits = id_digits[1::2]
    odd_digits = id_digits[::2]
    calculated_sum = sum([sum(divmod(2 * digit, 10)) for digit in even_digits]) + sum(odd_digits)
    validation_code = 10 - (calculated_sum % 10)
    return validation_code == check_digit

この関数は、入力されたID番号とバリデーションコードが一致している場合にTrueを返します。

  1. 使用例: 上記の関数を使用して、ID番号のバリデーションを行う例を示します:
id_number = "8001015009087"  # バリデーションコードは7
is_valid = validate_id_number(id_number)
print(is_valid)  # True
id_number = "9002011234080"  # バリデーションコードは0
is_valid = validate_id_number(id_number)
print(is_valid)  # True
id_number = "7102156025086"  # バリデーションコードは6
is_valid = validate_id_number(id_number)
print(is_valid)  # True
id_number = "8105101234082"  # バリデーションコードは2
is_valid = validate_id_number(id_number)
print(is_valid)  # True
id_number = "9901021234087"  # バリデーションコードは7
is_valid = validate_id_number(id_number)
print(is_valid)  # False

以上が南アフリカのID番号のバリデーションコードに関する解説と、コード例の紹介です。この情報を活用して、南アフリカのID番号のバリデーションを行う際に役立ててください。