MiddleDebuggingRareNot answered yet
Why does this average return the wrong value?
average([1, 2]) should be 1.5, but returns something else.
def average(nums):
return sum(nums) // len(nums)
print(average([1, 2]))
Find and fix the bug.
// is floor division, so average([1, 2]) returns 1, not 1.5. An empty list also raises ZeroDivisionError. Fix: use / for true division and guard the empty case: return sum(nums) / len(nums) if nums else 0.
- ✗Confusing
//(floor) with/(true division) - ✗Thinking
//rounds to nearest rather than toward negative infinity - ✗Forgetting the empty-list ZeroDivisionError
- →What does
//do for negative operands like-7 // 2? - →How do you compute an integer average while still rounding correctly?