2007-08-23
Python Cookbook 3.15 计算信用卡的校验和
需求:
你想计算一下自己信用卡的校验和,并判读它是否满足Luhn标准.
讨论:
Luhn模10是信用卡号的标准,在Python中并没有对应的内建函数,不过我们可以自己实现:
它可以节省你的时间,用于判断用户提供的信用卡号是否是有效的,因为你不用花钱去验证卡号是否有效.这个代码也可以广泛使用因为许多政府都使用Luhn校验算法.
如果你想用一行代码实现上面的功能,你真的找错书了(也许你应该去读Perl Cookbook),当然,我也提供一个版本,试试:
你想计算一下自己信用卡的校验和,并判读它是否满足Luhn标准.
讨论:
Luhn模10是信用卡号的标准,在Python中并没有对应的内建函数,不过我们可以自己实现:
def cardLuhnChecksumIsValid(card_number):本节的代码最初用于 一个电子商务系统.
""" checks to make sure that the card passes a luhn mod-10 checksum """
sum = 0
num_digits = len(card_number)
oddeven = num_digits & 1
for count in range(num_digits):
digit = int(card_number[count])
if not (( count & 1 ) ^ oddeven):
digit = digit * 2
if digit > 9:
digit = digit - 9
sum = sum + digit
return (sum % 10) == 0
它可以节省你的时间,用于判断用户提供的信用卡号是否是有效的,因为你不用花钱去验证卡号是否有效.这个代码也可以广泛使用因为许多政府都使用Luhn校验算法.
如果你想用一行代码实现上面的功能,你真的找错书了(也许你应该去读Perl Cookbook),当然,我也提供一个版本,试试:
checksum = lambda a: (
10 - sum([int(y)*[7,3,1][x%3] for x, y in enumerate(str(a)[::-1])])%10)%10
标签: Python