Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Luhn:
- def __init__(self, number_str):
- self.number = number_str
- self.check_digit = int(number_str[-1])
- self.non_check_digits = self.sum_digits(
- number_str[:-1])
- @staticmethod
- def sum_digits(check_sequence):
- new_sequence = ()
- for index, digit in enumerate(check_sequence[::], start=1):
- if index % 2 == 0:
- sum_t = 2*(int(digit))
- if sum_t > 9:
- sum_t -= 9
- new_sequence += (sum_t,)
- else:
- new_sequence += (int(digit),)
- return new_sequence
- def validate(self):
- sum_non_check_digits = sum(self.non_check_digits)
- total = sum_non_check_digits * 9
- check_digit = total % 10
- return check_digit == self.check_digit
- numbers_check = (
- ("79927398713", True),
- ("79927398710", False)
- )
- for number, test in numbers_check:
- ins = Luhn(number)
- assert ins.validate() is test
Add Comment
Please, Sign In to add comment