Part 2: Logic and Semantic Errors
Introduction
Logic Errors
What Are Logic Errors?
Real-World Examples from My Projects
Off-by-One Errors in List Processing
# Incorrect - Processing one less item than intended
def process_daily_metrics(metrics):
"""Process all daily metrics"""
results = []
for i in range(len(metrics) - 1): # Bug: Missing last item!
results.append(calculate_metric(metrics[i]))
return results
# Example usage
daily_data = [100, 200, 300, 400, 500]
processed = process_daily_metrics(daily_data)
# Returns only [calc(100), calc(200), calc(300), calc(400)]
# Missing the last item: 500Incorrect Conditional Logic
Average Calculation Error
Loop Boundary Issues
Common Logic Error Patterns
1. Comparison Operator Mistakes
2. Incorrect Boolean Logic
3. Algorithm Selection Errors
How I Catch Logic Errors
1. Write Unit Tests First (TDD Approach)
2. Use Assertions to Validate Assumptions
3. Debug with Print Statements and Logging
4. Code Review with Peers
Semantic Errors
What Are Semantic Errors?
Real-World Examples
Incorrect Formula Implementation
Type Confusion
Misunderstanding API Behavior
How I Prevent Semantic Errors
1. Clear Documentation and Comments
2. Use Type Hints
3. Write Examples and Doctests
4. Validate Against Known Values
Practical Debugging Strategies
Finding Logic Errors
Finding Semantic Errors
Tools I Use
Testing Frameworks
Static Type Checking
Debugging
Key Takeaways
Next in Series
Last updated