1
LuhnアルゴリズムをPythonで実装しようとしています。ここに私のコードはLuhnアルゴリズムによるクレジットカード番号の検証Python
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__
[Luhn Algorithm]のWikipediaページにPythonの実装があります(https://en.wikipedia.org/wiki/Luhn_algorithm#Verification_of_the_check_digit) – mhawke
どのように 'n'を渡していますか?整数として?もしそうなら、最初のforループを見てください。ここでは、 'digit = int(str(n [i]))* 2'という表現があります。 'n'が単純な整数なら、これはあなたのエラーを生成します。文字列に変換する前に数字をインデックス化することはできません。 – meetaig
http://stackoverflow.com/a/29197921/2141635 –