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

Tell us what’s happening:

I feel like I’m doing exactly what I’m being asked but it’s not approving my code. Is there something wrong or is this a bug?

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)

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

/* User Editable Region */


main()

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Challenge Information:

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

Can you give us more information? What’s the hint given?

This comparison is probably more complicated than it needs to be since that function returns true or false.

These are the step instructions:
Adjust the verify_card_number call such that if it returns True , print VALID! to the console. Otherwise, print INVALID! .

And this is the hint:
You should have if verify_card_number(translated_card_number): within the main function.

Ah. I mean, you don’t have that literal line of code. Your line is more complicated than that.

Oh I see. Alright I changed that and now the hint changed to " You should have print("INVALID!") within the else clause."

Again, it seems to me that I have done exactly that, and I even tried moving the print to the same line as else.

What’s the updated code?

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

Oh, rude. The test doesn’t like the extra whitespace after your :

Omg :smiling_face_with_tear: Thank you so much!

I got stuck as well in this problem, I checked my code 10x and then I gave up trying I ended up here thanks I see your question I noticed right away I forgot to include ‘’" for the strings (VALID! & INVALID).