Debug an ISBN Validator - some issues with varify

Tell us what’s happening:

Hello, I believe I have tested out all of the things and it returns at it is. Here I have my code with testmain to test my code, it return as it is. However, I am failing at basic things such as 7. I’m not sure what I need to do to achieve that, even though inputting it in testmain shows that it works.
with a lot of trail and error and backtracking I believe this is a result of doing try and except in a way of using raise. Maybe someone can help me out with how I can do this?

Your code so far

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-1]
    given_check_digit = isbn[length-1]
    #main_digits_list = [int(digit) for digit in main_digits]
    main_digits_list = [int(digit) for digit in main_digits]
    #for x in main_digits_list:
    #    print(x)
    # Calculate the check digit from other digits
    if length == 10:
        expected_check_digit = calculate_check_digit_10(main_digits_list)
    elif length == 13:
        expected_check_digit = calculate_check_digit_13(main_digits_list)
    # Check if the given check digit matches with the calculated check digit
    if given_check_digit == expected_check_digit:
        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)
    # 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: ') 

    try:
        values = user_input.split(',') 
        if len(values)!=2: 
            raise IndexError

        #if not isbn.isdigit():
        #    raise ValueError("Invalid character was found.")
        for num in values[0]:
            if not (num.isdigit() or num.upper()=="X" ):
                raise ValueError("Invalid character was found.")

        if not values[1].isdigit():
            raise ValueError("Length must be a number.")

        isbn = values[0]
        length = int(values[1])

 
    except IndexError:
        print("Enter comma-separated values.")
        return

    except ValueError as error:
        print(error)
        return
     
    if length == 10 or length == 13: 
        validate_isbn(isbn, length) 
    else:
        print('Length should be 10 or 13.')

'''
def testmain(inp):
    #user_input = input('Enter ISBN and length: ') 

    try:
        #values = user_input.split(',') 
        values = inp.split(',')
        if len(values)!=2: 
            raise IndexError

        #if not isbn.isdigit():
        #    raise ValueError("Invalid character was found.")
        for num in values[0]:
            if not (num.isdigit() or num.upper()=="X" ):
                raise ValueError("Invalid character was found.")

        if not values[1].isdigit():
            raise ValueError("Length must be a number.")

        isbn = values[0]
        length = int(values[1])

 
    except IndexError:
        print("Enter comma-separated values.")
        return

    except ValueError as error:
        print(error)
        return
     
    if length == 10 or length == 13: 
        validate_isbn(isbn, length) 
    else:
        print('Length should be 10 or 13.')

#testmain('1530051125')
'''
main()
  

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0

Challenge Information:

Debug an ISBN Validator - Debug an ISBN Validator

Welcome to the forum @nixonpoon9,

Enter ISBN and length: 
1530051126,9
Invalid character was found.

The tests expect “Length should be 10 or 13.” for this.

Enter ISBN and length: 
1530051126,13
Invalid character was found.

The tests expect “ISBN-13 code should be 13 digits long.” for this.

if length == 10:
        expected_check_digit = calculate_check_digit_10(main_digits_list)
else:
        expected_check_digit = calculate_check_digit_13(main_digits_list)

This starting code was changed, which could also break the tests.

Happy coding!