Debug an ISBN Validator

Hi, I need help with one of my final tasks described below:

19. When the user enters 080442957X,10, you should see the message Valid ISBN Code.

I have the code below. I have done all of the other tasks needed, but this task stumped me a lot because of the ‘X’ at the end of the ISBN. Can you give me some direction on how should I approach this?

def validate_isbn(isbn, length):
    if len(isbn) != length:
        print(f'ISBN-{length} code should be {length} digits long.')
        return

    main_digits = isbn[0:length]
    given_check_digit = length
     
    main_digits_list = [int(digit) for digit in main_digits]
   
    # Calculate the check digit from other digits
    if length == 10:
        expected_check_digit = calculate_check_digit_10(main_digits_list)
        print(expected_check_digit)
    else:
        expected_check_digit = calculate_check_digit_13(main_digits_list)
    # Check if the given check digit matches with the calculated check digit
    if expected_check_digit == '0':
        print('Valid ISBN Code.')
    else:
        print('Invalid ISBN Code.')

def calculate_check_digit_10(main_digits_list):
    # Note: You don't have to fully understand the logic in this function.
    digits_sum = 0
    # Multiply each of the first 9 digits by its corresponding weight (10 to 2) and sum up the results
    for index, digit in enumerate(main_digits_list):
        digits_sum += digit * (10 - index)
        print(digits_sum)
    # Find the remainder of dividing the sum by 11, then subtract it from 11
    result = 11 - digits_sum % 11
    # The calculation result can range from 1 to 11.
    # If the result is 11, use 0.
    # If the result is 10, use upper case X.
    # Use the value as it is for other numbers.
    if result == 11:
        expected_check_digit = '0'
    elif result == 10:
        expected_check_digit = 'X'
    else:
        expected_check_digit = str(result)
    return expected_check_digit

def calculate_check_digit_13(main_digits_list):
    # Note: You don't have to fully understand the logic in this function.
    digits_sum = 0
    # Multiply each of the first 12 digits by 1 and 3 alternately (starting with 1), and sum up the results
    for index, digit in enumerate(main_digits_list):
        if index % 2 == 0:
            digits_sum += digit * 1
        else:
            digits_sum += digit * 3
    # Find the remainder of dividing the sum by 10, then subtract it from 10
    result = 10 - digits_sum % 10
    # The calculation result can range from 1 to 10.
    # If the result is 10, use 0.
    # Use the value as it is for other numbers.
    if result == 10:
        expected_check_digit = '0'
    else:
        expected_check_digit = str(result)
    return expected_check_digit

def main():
    user_input = input('Enter ISBN and length: ')
    if user_input.find(',') == -1:
        print('Enter comma-separated values.')
        return

    values = user_input.split(',')

    isbn = values[0]
    if isbn.find('X') != -1:
        print('Detected an X in input. Continuing...') 
        pass
    else:
        print('Turning ISBN into an intger...')
        try:
            isbn = (int(isbn))
            print('Successfully turned into an intger!')
        except ValueError: 
            print("Invalid character was found.")
            return
    try:
        length = int(values[1])
    except ValueError:
        print('Length must be a number.')
        return
    
    if length == 10 or length == 13:
        validate_isbn(str(isbn), length)
    else:
        print('Length should be 10 or 13.')

main()

Welcome to the forum @

Please post a link to the lab.

Happy coding

Sure here is the link below.
Debug an ISBN Validator: Debug an ISBN Validator | freeCodeCamp.org

You need to comment out the call to main.

Add the following code at the end of the editor.

print(validate_isbn(1530051126, 10))

Check the console.

Happy coding