2007-08-23

 

Python Cookbook 3.15 计算信用卡的校验和

需求:

你想计算一下自己信用卡的校验和,并判读它是否满足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

标签:


Comments: 发表评论



<< Home

This page is powered by Blogger. Isn't yours?