Skip to main content

What is an Off-by-One Error in Python? (Explained for Kids!)

· 2 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

Have you ever counted your toys and accidentally said you had 11, but really only had 10? That’s kind of what an off-by-one error is in Python!

It’s a tiny mistake where your program counts 1 too many or 1 too few. These mistakes are super common, even for professional programmers.


🧮 Example 1: Counting with Ranges

Let’s say you want to print numbers from 1 to 10.

for i in range(1, 11):
print(i)

✅ This is correct because range(1, 11) means “start at 1, stop before 11”.

But if you write this:

for i in range(1, 10):
print(i)

❌ You only get numbers 1 to 9 — you're missing number 10. That’s an off-by-one error!


🎂 Example 2: Getting the Last Item in a List

Here’s a list of your favorite cakes:

cakes = ["Chocolate", "Strawberry", "Vanilla", "Carrot"]

If you want the last cake, this is correct:

print(cakes[3])  # Carrot

✅ Because the list starts at 0, the fourth item is at index 3.

But if you write:

print(cakes[4])

❌ You get an error! There is no cake at number 4 — you went 1 too far. Another off-by-one error.


🎁 Why Does This Happen?

Because Python starts counting at 0. Most people start counting at 1. That’s why it’s easy to get confused.

# Example
toys = ["Bear", "Car", "Doll"]
print(toys[0]) # "Bear", the first toy!

Always remember: Python starts at zero. So:

  • First item = index 0
  • Second item = index 1
  • Third item = index 2

🛠 Tips to Avoid Off-by-One Errors

  • ✅ Always check if your loop should go to or before the last number.
  • ✅ Remember range(a, b) goes from a to b-1.
  • ✅ Check list lengths with len() before accessing an item.
  • ✅ Use -1 to get the last item in a list:
print(cakes[-1])  # Carrot

🧁 Summary

Off-by-one errors are tiny counting mistakes in Python. They happen when:

  • You loop too far or not far enough
  • You access a list index that’s 1 too big or small

But now that you know about them, you can catch them like a debugging superhero 🦸‍♂️!

Happy coding! 🎉