Credit Card Number Validator funktioniert nicht richtig

def checksum(card_without_check):
    card_without_check = card_without_check[-1::-1]
    def numbers(string):
        return [int(x) for x in string]
    print(card_without_check)
    odd_numbers = numbers(card_without_check[0::2])
    even_numbers = numbers(card_without_check[1::2])

    odd_numbers = [x * 2 for x in odd_numbers]
    odd_numbers = [x - 9 if x > 9 else x for x in odd_numbers]
    print(even_numbers)
    print(odd_numbers)
    return sum(odd_numbers) + sum(even_numbers)

def check(checksum, check):
    return checksum % 10 == int(check)

card_number = input("Enter card number:\n")
print(checksum(card_number[:-1]))
print("Card is", check(checksum(card_number[:-1]), card_number[-1]))

Dieser Algorithmus scheint bei Beispielen wie "4556737586899855" zu funktionieren, jedoch nicht bei Beispielen wie "30569309025904". Ich habe den Prozess verfolgt und kann keine Fehler im Umgang mit den Zahlen finden. Wahrscheinlich fehlt mir hier nur ein Teil des Puzzles.

Ich folge der GliederungHie und habe Beispiele verwendetHie.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage