A collection of exercises that have been either removed from or not (yet) added to the main lesson.
Swapping the contents of variables (5 min)
Explain what the overall effect of this code is:
left = 'L' right = 'R' temp = left left = right right = temp
Compare it to:
left, right = [right, left]
Do they always do the same thing? Which do you find easier to read?
Solution
Both examples exchange the values of
left
andright
:print(left, right)
R L
In the first case we used a temporary variable
temp
to keep the value ofleft
before we overwrite it with the value ofright
. In the second case,right
andleft
are packed into a list and then unpacked intoleft
andright
.
Fixing and Testing
From: “Defensive Programming”
Fix
range_overlap
. Re-runtest_range_overlap
after each change you make.Solution
def range_overlap(ranges): '''Return common overlap among a set of [left, right] ranges.''' if not ranges: # ranges is None or an empty list return None max_left, min_right = ranges[0] for (left, right) in ranges[1:]: max_left = max(max_left, left) min_right = min(min_right, right) if max_left >= min_right: # no overlap return None return (max_left, min_right)