cs101 ยป

```
# Define a procedure weekend which takes a string as its input, and
# returns the boolean True if it's 'Saturday' or 'Sunday' and False otherwise.
def weekend(day):
if day =='Saturday' or day =='Sunday':
return True
else:
return False
print weekend('Tonday')
#>>> False
print weekend('Saturday')
#>>> True
print weekend('July')
#>>> False
```

```
# Define a procedure, stamps, which takes as its input a positive integer in
# pence and returns the number of 5p, 2p and 1p stamps (p is pence) required
# to make up that value. The answer should use as many 5p stamps as possible,
# then 2 pence stamps and finally 1p stamps.
def stamps(num):
# Your code here
five = num / 5
two = num % 5 / 2 # take the remainder when num is divided by 5
# divide that remainder by 2
# one = two % 2 # I think this is incorrect, as it gives the wrong result for stamps(12)
one = (num % 5) % 2 # this should be correct - the remainder of the remainder
return five, two, one
print stamps(8)
#>>> (1, 1, 1) # one 5p stamp, one 2p stamp and one 1p stamp
print stamps(5)
#>>> (1, 0, 0) # one 5p stamp, no 2p stamps and no 1p stamps
print stamps(29)
#>>> (5, 2, 0) # five 5p stamps, two 2p stamps and no 1p stamp
print stamps(0)
#>>> (0, 0, 0) # no 5p stamps, no 2p stamps and no 1p stamps
```

```
# The range of a set of values is the maximum value minus the minimum
# value. Define a procedure, set_range, which returns the range of three input
# values.
# Hint: the procedure, biggest which you coded in this unit
# might help you with this question. You might also like to find a way to
# code it using some built in functions.
def bigger (m, n):
if m > n:
return m
return n
def biggest (a, b, c):
return bigger (a, bigger(b, c))
# it is cumbersome to do this using bigger and biggest
def set_range(p, q, r):
if p == biggest (p, q, r):
if q == bigger (q, r):
return p - r
else:
return p - q
else:
if q == bigger (q, r):
if p == bigger (p, r):
return q - r
else:
return q - p
else:
if p == bigger (p, q):
return r - q
else:
return r - p
# a much shorter way is to use built in functions
# Python has two functions max and min that return the
# biggest and smallest values of a list respectively
def set_range(p, q, r):
return max(p, q, r) - min (p, q, r)
print set_range(10, 4, 7)
#>>> 6 # since 10 - 4 = 6
print set_range(1.1, 7.4, 18.7)
#>>> 17.6 # since 18.7 - 1.1 = 17.6
```