Реализация формулы Луна

Я пытался реализоватьLuhn Formula в Python вот мой код:

import sys


def luhn_check(number):
    if number.isdigit():
        last_digit = int(str(number)[-1])
        reverse_sequence = list(int(d) for d in str(int(number[-2::-1])))

        for i in range(0, len(reverse_sequence), 2):
            reverse_sequence[i] *= 2

        for i in range(len(reverse_sequence)):
            if reverse_sequence[i] > 9:
                reverse_sequence[i] -= 9

        sum_of_digits = 0
        for i in range(len(reverse_sequence)):
            sum_of_digits += reverse_sequence[i]

        result = divmod(sum_of_digits, 10)

        if result == last_digit:
            print("[VALID] %s" % number)
        else:
            print("[INVALID] %s" % number)
        quit()

    print("[ERROR] \" %s \" is not a valid sequence." % number)
    quit()


def main():
    if len(sys.argv) < 2:
        print("Usage: python TLF.py ")
        quit()

    luhn_check(sys.argv[1])

if __name__ == '__main__':
    main()

Но это неработает нормально:

[INVALID] 4532015112830366
[INVALID] 6011514433546201
[INVALID] 6771549495586802

и так далее...

Но логика кода кажется мне в порядке. Я следовал за этим рабочим процессом:

Формула Луна:

Удалите последнюю цифру из числа. Последняя цифра - это то, что мы хотим проверить. Обратно числа.

Умножьте цифры в нечетных позициях (1, 3, 5 и т. Д.) На 2 и вычтите 9 для всех результатов, превышающих 9

Добавить все числа вместе

Контрольная цифра (последний номер карты) - это сумма, которую нужно добавить, чтобы получить кратное 10 (по модулю 10).

Ответы на вопрос(6)

Ваш ответ на вопрос