Debug an ISBN Validator - Debug an ISBN Validator

Tell us what’s happening:

i am getting stuck at other steps. what should i do next i am not getting it so please have a look at my code and try to help me out for remaining steps to pass the test.

Your code so far

def validate_isbn(isbn, length):
    if len(isbn) != length + 1:
        print(f'ISBN-{length} code should be {length} digits long.') 
        return
    main_digits = isbn[0:-1]
    given_check_digit = isbn[0:-1]
    main_digits_list = [int(digit) for digit in main_digits]
    if length == 10:
        expected_check_digit = calculate_check_digit_10(main_digits_list)
    else:
        expected_check_digit = calculate_check_digit_13(main_digits_list)
    if given_check_digit == expected_check_digit:
        print('Valid ISBN Code.')
    else:
        print('Invalid ISBN Code.')
def calculate_check_digit_10(main_digits_list):
    digits_sum = 0
    for index, digit in enumerate(main_digits_list):
        digits_sum += digit * (10 - index)
    result = 11 - digits_sum % 11
    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 ',' not in user_input:
        print("Enter comma-separated values.")
        return
    values = user_input.split(',')
    try:
        isbn = values[0]
        length = int(values[1])
    except ValueError:
        print("Length must be a number.")
        return
    if length == 10 or length == 13:
        validate_isbn(isbn, length)
        return
    else:
        print('Length should be 10 or 13.')
        return

main()

Your browser information:

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

Challenge Information:

Debug an ISBN Validator - Debug an ISBN Validator

Hi @onkar.mahajan999 and welcome to our community!

Your code is failing this test (amongst others):

When the user enters an incorrect ISBN code with characters other than numbers, you should see the message Invalid character was found. in the console.

How can you address this in your code?

Also, you define these two variables with exactly the same value. What values are you trying to assign to them?