# Debug an ISBN Validator - Debug an ISBN Validator

**URL:** <https://forum.freecodecamp.org/t/debug-an-isbn-validator-debug-an-isbn-validator/771739>\
**Category:** Curriculum Help\
**Tags:** python\
**Created:** [December 28, 2025, 7:08pm UTC](https://forum.freecodecamp.org/t/debug-an-isbn-validator-debug-an-isbn-validator/771739 "2025-12-28T19:08:45Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![ma0102867](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/ma0102867/32/406466_2.png) [@ma0102867](https://forum.freecodecamp.org/u/ma0102867)\
**Post date:** [December 28, 2025, 7:08pm UTC](https://forum.freecodecamp.org/t/debug-an-isbn-validator-debug-an-isbn-validator/771739/1 "2025-12-28T19:08:45Z")

</div>

### Tell us what’s happening:

i don’t know how to get past step 19  
i need help

### Your code so far

```py
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 = isbn[length - 1]
    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)
    else:
        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: ')
    values = user_input.split(',')
    if ',' not in user_input:
       print('Enter comma-separated values.')
       return
    try:
      length = int(values[1])
    except ValueError:
       print("Length must be a number.")
       return
    isbn = values[0]
    if not isinstance(isbn, int) or isbn == 'x':
        print ("Invalid character was found.")
    if length == 10 or length == 13:
      validate_isbn(isbn, length)
      print ('Valid ISBN Code.')
    else:
     print('Length should be 10 or 13.')
    if length == 10 and isbn == x:
        print ('valid Isbn code') 
     
# main()

 

```

### Your browser information:

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

### Challenge Information:

Debug an ISBN Validator - Debug an ISBN Validator

> **[freeCodeCamp.org](https://www.freecodecamp.org/learn/python-v9/lab-isbn-validator/debug-an-isbn-validator)**
>
> Learn to Code — For Free

---

<div class="post-metadata">

**Author:** ![pkdvalis](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/pkdvalis/32/350571_2.png) [@pkdvalis](https://forum.freecodecamp.org/u/pkdvalis)\
**Post date:** [December 28, 2025, 8:25pm UTC](https://forum.freecodecamp.org/t/debug-an-isbn-validator-debug-an-isbn-validator/771739/2 "2025-12-28T20:25:18Z")

</div>

What happens when you test that input?

---

<div class="post-metadata">

**Author:** ![ma0102867](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/ma0102867/32/406466_2.png) [@ma0102867](https://forum.freecodecamp.org/u/ma0102867)\
**Post date:** [December 29, 2025, 5:03pm UTC](https://forum.freecodecamp.org/t/debug-an-isbn-validator-debug-an-isbn-validator/771739/3 "2025-12-29T17:03:20Z")

</div>

it give me

ValueError: invalid literal for int() with base 10: ‘X’

---

<div class="post-metadata">

**Author:** ![pkdvalis](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/pkdvalis/32/350571_2.png) [@pkdvalis](https://forum.freecodecamp.org/u/pkdvalis)\
**Post date:** [December 29, 2025, 5:58pm UTC](https://forum.freecodecamp.org/t/debug-an-isbn-validator-debug-an-isbn-validator/771739/4 "2025-12-29T17:58:22Z")

</div>

Which line or block of code is generating this error?

---

<div class="post-metadata">

**Author:** ![ma0102867](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/ma0102867/32/406466_2.png) [@ma0102867](https://forum.freecodecamp.org/u/ma0102867)\
**Post date:** [December 29, 2025, 6:23pm UTC](https://forum.freecodecamp.org/t/debug-an-isbn-validator-debug-an-isbn-validator/771739/5 "2025-12-29T18:23:03Z")

</div>

the problem is on line 7

---

<div class="post-metadata">

**Author:** ![pkdvalis](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/pkdvalis/32/350571_2.png) [@pkdvalis](https://forum.freecodecamp.org/u/pkdvalis)\
**Post date:** [December 29, 2025, 7:45pm UTC](https://forum.freecodecamp.org/t/debug-an-isbn-validator-debug-an-isbn-validator/771739/6 "2025-12-29T19:45:39Z")

</div>

What line of code is on line 7?

---

<div class="post-metadata">

**Author:** ![pkdvalis](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/pkdvalis/32/350571_2.png) [@pkdvalis](https://forum.freecodecamp.org/u/pkdvalis)\
**Post date:** [December 29, 2025, 7:46pm UTC](https://forum.freecodecamp.org/t/debug-an-isbn-validator-debug-an-isbn-validator/771739/7 "2025-12-29T19:46:26Z")

</div>

Here are some troubleshooting steps you can follow.

1. Are there any errors or messages in the console?
2. What is the requirement of the failing test?
3. Check the related User Story and ensure it’s followed precisely.
4. What line of code implements this?
5. What is the result of the code and does it match the requirement? (Write the value of a variable to the console at that point in the code if needed.)

If this does not help you solve the problem, please reply with answers to these questions.

---

<div class="post-metadata">

**Author:** ![ILM](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/ilm/32/363239_2.png) [@ILM](https://forum.freecodecamp.org/u/ILM)\
**Post date:** [May 7, 2026, 6:37pm UTC](https://forum.freecodecamp.org/t/debug-an-isbn-validator-debug-an-isbn-validator/771739/8 "2026-05-07T18:37:26Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
