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
相关产品推荐
相关产品推荐

