Learn How to Work with Numbers and Strings by Implementing the Luhn Algorithm - Step 34

Tell us what’s happening:

I’m very confused as if I try to change the card_number variable to print(‘INVALID!’) it returns with a nonetypr error on line 29 and i’m confused on what i need to do.

Your code so far

def verify_card_number(card_number):
    sum_of_odd_digits = 0
    card_number_reversed = card_number[::-1]
    odd_digits = card_number_reversed[::2]

    for digit in odd_digits:
        sum_of_odd_digits += int(digit)

    sum_of_even_digits = 0
    even_digits = card_number_reversed[1::2]
    for digit in even_digits:
        number = int(digit) * 2
        if number >= 10:
            number = (number // 10) + (number % 10)
        sum_of_even_digits += number
    total = sum_of_odd_digits + sum_of_even_digits
    print(total)
    return total % 10 == 0

# User Editable Region

def main():
    card_number = '4111-1111-4555-1142'
    card_translation = str.maketrans({'-': '', ' ': ''})
    translated_card_number = card_number.translate(card_translation)

# User Editable Region


    if verify_card_number(translated_card_number):
        print('VALID!')
    else:
        print('INVALID!')

main()

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36

Challenge Information:

Learn How to Work with Numbers and Strings by Implementing the Luhn Algorithm - Step 34

Welcome to the forum :wave:

Can you provide the exact error. An error will often have all of the information that you need to correct it.

what are you changing the card number to?

You don’t seem to have changed the value of the card_number variable? What did you try?

Do you get any hint messages?

what is your code when you have that error?

yes it tells me to have card_number = '4111-1111-4555-1141' within the main function.

Is print('INVALID!') a legitimate thing to check to see if its a valid credit card number though?

I don’t think so i just need to change the value of card_number somehow

and what do you have?

card_number = '4111-1111-4555-1141' within the main function which is what i don’t get becuause it tells me to change the value even though the value is what it is telling me

Really, because in the code you posted it’s:

Did you change anything else? Please repost your full function code.

def verify_card_number(card_number):
    sum_of_odd_digits = 0
    card_number_reversed = card_number[::-1]
    odd_digits = card_number_reversed[::2]

    for digit in odd_digits:
        sum_of_odd_digits += int(digit)

    sum_of_even_digits = 0
    even_digits = card_number_reversed[1::2]
    for digit in even_digits:
        number = int(digit) * 2
        if number >= 10:
            number = (number // 10) + (number % 10)
        sum_of_even_digits += number
    total = sum_of_odd_digits + sum_of_even_digits
    print(total)
    return total % 10 == 0

# User Editable Region

def main():
    card_number = '4111-1111-4555-1142'
    card_translation = str.maketrans({'-': '', ' ': ''})
    translated_card_number = card_number.translate(card_translation)

# User Editable Region


    if verify_card_number(translated_card_number):
        print('VALID!')
    else:
        print('INVALID!')

main()

Looks different to me :face_with_monocle:

thank you so much i don’t actually know how i missed that to be honest

Read all the errors and hints carefully, they often contain exactly what you need :+1:

that doesn’t look like a card number at all, there card_number is None because that is the output of print