luhn算法python实现
时间: 2024-08-30 15:02:18 浏览: 79
Python3通过Luhn算法快速验证信用卡卡号的方法
Luhn算法,也被称为模10算法(Modulus 10 algorithm),是一种简单的校验和公式,用于验证各种身份识别码,如信用卡号码。其算法过程大致如下:
1. 从数字的最后一个开始向左,跳过第一个数字(通常是校验位),然后每个偶数位置上的数字(倒数第二位、倒数第四位等)乘以2。
2. 如果乘以2的结果大于9,则将该结果拆分为两个数字的和,例如14变成1和4。
3. 将所有偶数位置上的数字(包括拆分后的结果)与奇数位置上的数字相加。
4. 计算总和的模10,如果结果为0,则认为校验通过。
Python实现Luhn算法的示例代码如下:
```python
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 = 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
# 使用示例
card_number = 1234567890123456
print(is_luhn_valid(card_number)) # 输出:True 或 False
```
阅读全文