银行卡校验
可以用于前端需要用户输入银行卡时做初步校验
银行卡号码的校验采用Luhn算法,校验过程大致如下:
-
从右到左给卡号字符串编号,最右边第一位是1,最右边第二位是2,最右边第三位是3….
-
从右向左遍历,对每一位字符t执行第三个步骤,并将每一位的计算结果相加得到一个数s。
-
对每一位的计算规则:如果这一位是奇数位,则返回t本身,如果是偶数位,则先将t乘以2得到一个数n,如果n是一位数(小于10),直接返回n,否则将n的个位数和十位数相加返回。
- 如果s能够整除10,则此号码有效,否则号码无效。
因为最终的结果会对10取余来判断是否能够整除10,所以又叫做模10算法。
% 取模 - 返回除法的余数
*= 乘法赋值运算符 c = a 等效于 c = c a
// 取整除 - 返回商的整数部分(向下取整)
使用Python实现
def luhn(card_num):
s = 0
card_num_length = len(card_num)
for _ in range(1, card_num_length + 1):
t = int(card_num[card_num_length - _])
print("当前银行卡