Guest User

Untitled

a guest
May 26th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. class Luhn:
  2.  
  3. def __init__(self, number_str):
  4. self.number = number_str
  5. self.check_digit = int(number_str[-1])
  6. self.non_check_digits = self.sum_digits(
  7. number_str[:-1])
  8.  
  9. @staticmethod
  10. def sum_digits(check_sequence):
  11. new_sequence = ()
  12. for index, digit in enumerate(check_sequence[::], start=1):
  13. if index % 2 == 0:
  14. sum_t = 2*(int(digit))
  15. if sum_t > 9:
  16. sum_t -= 9
  17. new_sequence += (sum_t,)
  18. else:
  19. new_sequence += (int(digit),)
  20. return new_sequence
  21.  
  22. def validate(self):
  23. sum_non_check_digits = sum(self.non_check_digits)
  24. total = sum_non_check_digits * 9
  25. check_digit = total % 10
  26. return check_digit == self.check_digit
  27.  
  28.  
  29. numbers_check = (
  30. ("79927398713", True),
  31. ("79927398710", False)
  32. )
  33.  
  34. for number, test in numbers_check:
  35. ins = Luhn(number)
  36. assert ins.validate() is test
Add Comment
Please, Sign In to add comment