【发布时间】:2017-01-09 08:54:12
【问题描述】:
我正在尝试在 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__
【问题讨论】:
-
在 Wikipedia 页面上有一个 Python 实现,用于Luhn Algorithm.
-
n过得怎么样?作为整数?如果是这样,请查看第一个 for 循环。那里有表达式digit = int(str(n[i])) * 2。如果n是一个简单的整数,这将产生您的错误。在转换为字符串之前你不能索引数字 -
要调试,打印你使用索引的变量的类型。 getitem 应该实现索引才能工作。这就是错误所说的。