Modulo-10 check digit calculation and validation

def calculate_check_digit(digits): multiplier = 3 total = 0 for index in range(len(digits) - 1, -1, -1): digit = int(digits[index]) total = total + (digit * multiplier) if multiplier == 3: multiplier = 1 elif multiplier == 1: multiplier = 3 check_digit = 10 - (total % 10) return check_digit def validate(digits_including_check_digit): multiplier = 1 total = 0 for index in range(len(digits_including_check_digit) - 1, -1, -1): digit = int(digits_including_check_digit[index]) total = total + (digit * multiplier) if multiplier == 3: multiplier = 1 elif multiplier == 1: multiplier = 3 remainder = total % 10 if remainder == 0: is_valid = True else: is_valid = False return is_valid digits = "978095614305" full = digits + str(calculate_check_digit(digits)) print(full) is_valid = validate(full) print (is_valid) print(validate("9780956143051")) print(validate("7980956143051")) print(validate("9780951643051")) print(validate("9780957143051"))

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.