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

信用卡验证器逆向隔位数字翻倍功能异常,寻求技术帮助

信用卡卡号翻倍验证函数修复方案

错误原因

你当前的函数直接对索引值进行了翻倍操作,而不是对索引对应的卡号数字翻倍,这才导致结果不符合预期。

修正后的代码

def doubled_card_number_from_behind(card_digits):
    double_digit_list = []
    # 从倒数第二位的索引开始,逆向隔位遍历所有目标位置
    for idx in range(len(card_digits) - 2, -1, -2):
        # 取对应位置的数字进行翻倍,而非索引本身
        doubled_value = card_digits[idx] * 2
        double_digit_list.append(doubled_value)
    return double_digit_list

关键改进点

  1. 参数传入:将存储卡号数字的列表作为参数传入函数,避免依赖全局变量,代码更健壮。
  2. 操作对象修正:遍历索引idx后,通过card_digits[idx]获取对应位置的卡号数字,再执行翻倍操作。
  3. 循环范围调整:循环结束条件设为-1,确保能覆盖到卡号的第一位数字(16位卡号会遍历8个目标位置,符合Luhn算法要求)。

测试验证

以卡号4326571675482146为例,先将卡号转为整数列表:

card_digits = [4,3,2,6,5,7,1,6,7,5,4,8,2,1,4,6]

调用修正后的函数,得到的结果为[8,4,8,14,2,10,4,8],完全符合预期。

额外提示

确保存储卡号的列表中是整数类型的数字,如果用户输入的是字符串格式的卡号,需要先做转换:

card_input = input("请输入信用卡卡号:").strip()
card_digits = [int(char) for char in card_input]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:45:34