【代码】校验信用卡号码

前言

通过最后一位号码校验前面的号码是否有误,使用 Luhn 算法校验信用卡号

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 在控制台获取一组信用卡号,允许号码中包含空格或连字符
card_number = input("请输入信用卡号:\n").strip()
card_number = card_number.replace(" ", "").replace("-", "")

# 常见信用卡号为 13~19 位,并且每一位都必须是数字
if not card_number.isdigit():
print("校验失败:信用卡号只能包含数字、空格或连字符")
elif not 13 <= len(card_number) <= 19:
print("校验失败:信用卡号长度应为13~19位")
else:
# 将每一位字符转换为整数并放入列表
array = []
for i in card_number:
array.append(int(i))

# 从倒数第二位开始向左计算:每隔一位乘2,大于9则减9
total = 0
for i in range(len(array) - 2, -1, -1):
number = array[i]
if (len(array) - 2 - i) % 2 == 0:
number *= 2
if number > 9:
number -= 9
total += number

# 根据前面所有位计算最后一位应有的校验数字
check_digit = (10 - total % 10) % 10

if check_digit == array[-1]:
print("校验成功")
else:
print("校验失败")

完成

参考文献