我非常喜欢编程。 我按照以下说明实施了信用卡验证程序。
码
# credit card validation - Luhn Formula
card_number = list(reversed(input("enter card number: ")))
status = False
temp1 = []
temp2 = []
sum = 0
for i in card_number:
if card_number.index(i) % 2 != 0:
temp1.append(int(i) * 2)
else:
temp1.append(int(i))
for e in temp1:
if e > 9:
temp2.append(e - 9)
else:
temp2.append(e)
for f in temp2:
sum += f
if sum % 10 == 0:
status = True
print("card is VALID")
else:
print("card is INVALID")
代码有时会起作用,有时却不起作用。我的代码有问题。
valid number 49927398716 - works
valid number 4916092180934319 - not working
请不要链接到此 - Implementation of Luhn Formula 我不需要另外的实现。如果可能的话请告诉我我的代码有什么问题。所以我可以纠正它。
谢谢
答案 0 :(得分:1)
你的问题在这里:
for n,i in enumerate(card_number):
if n % 2 != 0:
temp1.append(int(i) * 2)
else:
temp1.append(int(i))
这会查找数字中的特定数字,但如果重复该数字,您将获得第一次出现的位置。如果两个(或全部或没有)出现位于奇数位置,则代码将起作用。但如果一个人处于平衡状态而另一个人处于平衡状态,那么你的奇数/偶数测试将产生错误的答案。以这种方式检查奇数/偶数位置:
{{1}}