You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Luhn算法(信用卡校验)Python代码输入有效卡号仍返回无效问题求助

Luhn算法信用卡校验代码问题排查

问题根因

  • 累加变量初始化位置错误:你将total_1和total_2两个累加变量放在了循环内部的分支中初始化,每次进入对应判断分支时都会将变量重置为0,之前的累加结果会直接丢失,最终仅最后一个符合条件的位数会被计入总和,自然无法得到正确的校验结果。

修复后代码

def credit_card_validation(num):
    number = list(int(x) for x in str(num))
    number.reverse()
    # 累加变量移到循环外初始化
    total_1 = 0
    total_2 = 0
    for i in range(0, len(number)):
        if i % 2 == 1:
            product = 2 * number[i]
            if product > 9:
                total_1 += product - 9
            else:
                total_1 += product
        else:
            total_2 += number[i]
    if (total_1 + total_2) % 10 == 0:
        status = 'Valid'
    else:
        status = 'Invalid'
    return status

验证说明

使用标准合法测试卡号4111111111111111测试,修复后的代码会正确返回Valid。

内容的提问来源于stack exchange,提问作者Mohamed Muhsin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:36:04