LEARN Python - 2.6 Debugging Logic When Python Disagrees With You - zerotopyhero.com

Learn Python – 2.6: Debugging Logic – When Python Disagrees With You

At some point in programming, this will happen:

You write code.
You run it.
Python does something…
…and it’s not what you expected.

No error message.
No crash.
Just the wrong behavior.

Welcome to logic bugs.

This is not failure.
This is programming.

What a Logic Bug Actually Is

A logic bug happens when:

  • Your code runs

  • Python is perfectly happy

  • But the result is wrong

Python didn’t misunderstand you.
It did exactly what you told it to do.

You just told it the wrong thing.

And that’s okay.

A Classic Example

Look at this code:

				
					age = int(input("How old are you? "))

if age >= 18:
    print("Adult")
elif age >= 13:
    print("Teen")
else:
    print("Child")

				
			

Seems fine, right?

Now imagine you accidentally write this instead:

				
					if age >= 13:
    print("Teen")
elif age >= 18:
    print("Adult")

				
			

Suddenly, adults are teens.

Python isn’t broken.
Your order of conditions is.

This is the most common logic bug beginners hit.

The Golden Rule of Debugging Logic

When something behaves strangely, ask:

“What did Python actually check?”

Python evaluates conditions top to bottom and stops at the first true one.

It doesn’t know your intention.
It only knows the order you gave it.

Step 1: Slow It Down

When logic feels confusing, slow everything down.

Add prints.

Yes, really.

				
					print("Checking age...")
print("Age is:", age)
				
			

Inside conditions:

				
					if age >= 18:
    print("Age >= 18 is TRUE")
    print("Adult")
elif age >= 13:
    print("Age >= 13 is TRUE")
    print("Teen")
				
			

This lets you see which path Python takes.

Debugging is not guessing.
It’s observing.

Step 2: Check Your Conditions One by One

Test comparisons separately:

				
					print(age >= 18)
print(age >= 13)
				
			

Seeing True or False printed often makes the problem obvious immediately.

Many logic bugs vanish the moment you print the condition.

Step 3: Watch Out for These Common Traps

Trap 1: Wrong Order

Always check the most specific conditions first.

				
					# Good
if score >= 90:
    ...
elif score >= 70:
    ...
				
			

Not the other way around:

				
					# Bad
if score >= 70:
    ...
elif score >= 90:
    ...

				
			

Trap 2: Impossible Conditions

This will never be true:

				
					if age < 10 and age > 20:
				
			

No number can satisfy both.

When debugging, ask:

“Can this condition ever be true?”

Trap 3: Comparing the Wrong Thing

This happens more than people admit:

				
					if name == "Alex":
				
			

But the input was "alex".

Normalize your input:

				
					name = name.strip().lower()  #.strip() removes spaces, .lower() converts all characters to lowercase

				
			

Then compare.

Trap 4: Forgetting What or Really Means

This is wrong:

				
					if age == 18 or 19:
				
			

Python reads that as:

  • age == 18 → maybe

  • 19 → always true

So the condition is always true.

Correct version:

				
					if age == 18 or age == 19:

				
			

Or better:

				
					if age >= 18:
				
			

Step 4: Talk Through the Code Like a Human

One of the best debugging tools costs nothing.

Read your code out loud.

Literally.

				
					if has_ticket and age >= 18:
				
			

Becomes:

“If the person has a ticket and is at least 18…”

If that sentence doesn’t match what you meant, the code won’t either.

Debugging Is a Skill, Not a Talent

Beginners often think:

“Good programmers don’t make bugs.”

Reality:

Good programmers are just good at finding bugs.

Every confusing moment you survive makes you better at the next one.

Debugging isn’t a setback.
It’s how understanding is built.

What You’ve Learned

You now know how to:

  • Recognize logic bugs

  • Understand why Python behaves the way it does

  • Use print() to debug

  • Check condition order

  • Spot impossible logic

  • Read code like plain English

This is a huge step toward confidence.

Mini Quiz

Try these:

  1. What is a logic bug?

  2. Why doesn’t Python warn you about logic bugs?

  3. What’s the first thing you should do when code behaves strangely?

  4. Why does condition order matter?

  5. What will this print?

				
					x = 5

if x > 10:
    print("Big")
elif x > 3:
    print("Medium")
else:
    print("Small")
				
			
ZeroToPyHero