银行卡号码的校验规则(Luhn算法/模10算法)

本文介绍了银行卡号码的校验方法——Luhn算法,也称为模10算法。通过从右到左编号并根据奇偶位执行特定计算规则,最后将所有结果相加并判断是否能被10整除来验证银行卡号码的有效性。提供了Python实现示例,帮助前端在用户输入银行卡号时进行初步校验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

银行卡校验

可以用于前端需要用户输入银行卡时做初步校验

银行卡号码的校验采用Luhn算法,校验过程大致如下:

  1. 从右到左给卡号字符串编号,最右边第一位是1,最右边第二位是2,最右边第三位是3….

  2. 从右向左遍历,对每一位字符t执行第三个步骤,并将每一位的计算结果相加得到一个数s。

  3. 对每一位的计算规则:如果这一位是奇数位,则返回t本身,如果是偶数位,则先将t乘以2得到一个数n,如果n是一位数(小于10),直接返回n,否则将n的个位数和十位数相加返回。

  4. 如果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("当前银行卡对应数字t={}".format(t))
        print("当前_为{}".format(_))
        print("_取模{}".format(_ % 2))
        if _ % 2 == 0:
            print("当前是偶数位")
            t *= 2
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值