Luhn's Checksum Algorithm
This commit is contained in:
21
luhnchecksum.py
Normal file
21
luhnchecksum.py
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
def luhn_checksum(card_number):
|
||||||
|
def digits_of(n):
|
||||||
|
return [int(d) for d in str(n)]
|
||||||
|
|
||||||
|
digits = digits_of(card_number)
|
||||||
|
odd_digits = digits[-1::-2]
|
||||||
|
even_digits = digits[-2::-2]
|
||||||
|
checksum = 0
|
||||||
|
checksum += sum(odd_digits)
|
||||||
|
for d in even_digits:
|
||||||
|
checksum += sum(digits_of(d * 2))
|
||||||
|
return checksum % 10
|
||||||
|
|
||||||
|
|
||||||
|
def is_luhn_valid(card_number):
|
||||||
|
return luhn_checksum(card_number) == 0
|
||||||
|
|
||||||
|
|
||||||
|
n = int(input())
|
||||||
|
for _ in range(n):
|
||||||
|
print("PASS" if is_luhn_valid(input()) else "FAIL")
|
||||||
Reference in New Issue
Block a user