gpt4 book ai didi

python - 使用 Luhn 算法 Python 验证信用卡号

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:17 25 4
gpt4 key购买 nike

我正在尝试用 Python 实现 Luhn 算法。这是我的代码

def validate(n):
if len(str(n)) > 16:
return False
else:
if len(str(n)) % 2 == 0:
for i in str(n[0::2]):
digit = int(str(n[i])) * 2
while digit > 9:
digit = sum(map(int, str(digit)))
dig_sum = sum(map(int, str(n)))
return True if dig_sum % 10 == 0 else False
elif len(str(n)) % 2 != 0:
for i in str(n[1::2]):
digit = int(str(n[i])) * 2
while digit > 9:
digit = sum(map(int, str(digit)))
dig_sum = sum(map(int, str(n)))
return True if dig_sum % 10 == 0 else False

一直报错

TypeError: 'int' object has no attribute '__getitem__

最佳答案

以下是用于检测有效信用卡号的 Lunh 算法的 Python 实现。函数将数字作为字符串并返回其是否有效的信用卡。

它基于以下链接中提到的步骤:https://www.codeproject.com/Tips/515367/Validate-credit-card-number-with-Mod-algorithm

第 1 步 - 从校验位开始,将每隔一个数字的值加倍(从右到左每隔 2 个数字)

第 2 步 - 如果将一个数字加倍得到两位数,将这些数字相加得到一位数。这将产生八个单位数字。

第 3 步 - 现在将未加倍的数字添加到奇数位

第 4 步 - 将此数字中的所有数字相加

如果最后的金额能被 10 整除,则信用卡号有效。如果不能被 10 整除,则该数字无效。

def luhn(ccn):
c = [int(x) for x in ccn[::-2]]
u2 = [(2*int(y))//10+(2*int(y))%10 for y in ccn[-2::-2]]
return sum(c+u2)%10 == 0

#Test
print(luhn("49927398716"))

关于python - 使用 Luhn 算法 Python 验证信用卡号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39272087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com