首页 > 解决方案 > 我有与 Luhn_Algorithim 相关的信用卡验证查询:在 python 中

问题描述

我得到了验证信用卡号的解决方案,我想了解第二个 if 语句背后的逻辑:

if 2*num_list_rev[i]>9:
                double = double + 2*num_list_rev[i] - 9

我是编码新手,所以感觉这可能是处理 2 位数字的一种方式,但不明白为什么我们从相乘的数字中减去 9?

num_list = [int(char) for char in number]
num_len = len(num_list)
num_list_rev = num_list[::-1]
double = 0
single = 0
for i in range(0,num_len):
    if i%2 != 0:
        if 2*num_list_rev[i]>9:
            double = double + 2*num_list_rev[i] - 9
        else:
            double = double + 2 * num_list_rev[i]
    else:
        single = single + num_list_rev[i]

if (double+single)%10 == 0:
    print(f'{number} is a valid credit card number.')
else:
    print(f'{number} is not a valid credit card number.')

标签: python-3.xluhn

解决方案


推荐阅读