# Additional Exercises

Last updated on 2023-04-21 | Edit this page

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:

### PYTHON

left = 'L'
right = 'R'

temp = left
left = right
right = temp

Compare it to:

### PYTHON

left, right = right, left

Do they always do the same thing? Which do you find easier to read?

Both examples exchange the values of left and right:

### PYTHON

print(left, right)

### OUTPUT

R L

In the first case we used a temporary variable temp to keep the value of left before we overwrite it with the value of right. In the second case, right and left are packed into a tuple and then unpacked into left and right.

### Turn a String into a List

Use a for-loop to convert the string “hello” into a list of letters:

### PYTHON

["h", "e", "l", "l", "o"]

Hint: You can create an empty list like this:

### PYTHON

my_list = []

### PYTHON

my_list = []
for char in "hello":
my_list.append(char)
print(my_list)

### Reverse a String

Knowing that two strings can be concatenated using the + operator, write a loop that takes a string and produces a new string with the characters in reverse order, so 'Newton' becomes 'notweN'.

### PYTHON

newstring = ''
oldstring = 'Newton'
for char in oldstring:
newstring = char + newstring
print(newstring)

### Fixing and Testing

From: “Defensive Programming”

Fix range_overlap. Re-run test_range_overlap after each change you make.

### PYTHON

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)