These exercises are taken from http://www.ling.gu.se/~lager/python_exercises.html

1) Define a function max() that takes two numbers as arguments and returns the largest of them. Use the if-then-else construct available in Python. (It is true that Python has the max() function built in, but writing it yourself is nevertheless a good exercise.)

``````

In [1]:

def max(num1, num2):
if num1 > num2:
return num1
else:
return num2

``````
``````

In [4]:

# usage
print max(7,5) # this prints 7
assert max(10,1) == 10
assert max(5,7) == 7

``````
``````

7

``````

2) Define a function max_of_three() that takes three numbers as arguments and returns the largest of them.

``````

In [7]:

def max_of_three(num1, num2, num3):
max1 = max(num1, num2)
result = max(max1, num3)
return result

``````
``````

In [8]:

def max_of_three(num1, num2, num3):
return max(num1, max(num2, num3))

``````
``````

In [11]:

# test of max_of_three
print max_of_three(1,2,3) # this will print 3
print max_of_three(3,2,1) # this will print 3
print max_of_three(2,3,1) # this will print 3
assert max_of_three(5,6,7) == 7
assert max_of_three(6,7,8) == 8
assert max_of_three(9,10,11) == 11

``````
``````

3
3
3

``````

3) Define a function that computes the length of a given list or string. (It is true that Python has the len() function built in, but writing it yourself is nevertheless a good exercise.)

``````

In [12]:

def length(sequence):
count = 0
for element in sequence:
count += 1
return count

``````
``````

In [13]:

# test of length
print length("word") # prints 4
print length([7,7,7,9,10,11]) # prints 6
assert length("abc") == 3
assert length([]) == 0

``````
``````

4
6

``````

4) Write a function that takes a character (i.e. a string of length 1) and returns True if it is a vowel, False otherwise.

``````

In [15]:

def is_vowel(letter):
if letter == 'a':
return True
elif letter == 'e':
return True
elif letter == 'i':
return True
elif letter == 'o':
return True
elif letter == 'u':
return True
else:
return False

``````
``````

In [16]:

def is_vowel(letter):
return letter in 'aeiou'

``````
``````

In [18]:

# test is_vowel
print is_vowel('a') # this prints True
print is_vowel('z') # this prints False
assert is_vowel('e') == True
assert is_vowel('p') == False

``````
``````

True
False

``````

5) Write a function translate() that will translate a text into "rövarspråket" (Swedish for "robber's language"). That is, double every consonant and place an occurrence of "o" in between. For example, translate("this is fun") should return the string "tothohisos isos fofunon".

``````

In [19]:

def translate(text):
translation = ''
for letter in text:
if letter.isalpha() and not is_vowel(letter):
translation += letter + 'o' + letter
else:
translation += letter
return translation

``````
``````

In [21]:

# test translate
print translate('frog') # prints 'fofrorogog'
assert translate("this is fun") == "tothohisos isos fofunon"

``````
``````

fofrorogog

``````

6) Define a function sumlist() and a function multiplylist() that sums and multiplies (respectively) all the numbers in a list of numbers. For example, sumlist([1, 2, 3, 4]) should return 10, and multiplylist([1, 2, 3, 4]) should return 24.

``````

In [22]:

def sumlist(thelist):
total = 0
for number in thelist:
total += number

``````
``````

In [23]:

def multiplylist(thelist):
total = 1
for number in thelist:
total *= number

``````
``````

In [26]:

# test sumlist and multiplylist
print sumlist([1,2,3,4]) # prints 10
print multiplylist([1,2,3,4]) # prints 24
assert sumlist([1,1,2,3]) == 7
assert multiplylist([10,9,8,7,6,5,4,3,2,1,0]) == 0

``````
``````

10
24

``````

7) Define a function reverse() that computes the reversal of a string. For example, reverse("I am testing") should return the string "gnitset ma I".

``````

In [27]:

def reverse(thestring):
newstring = ''
for letter in thestring[::-1]:
newstring += letter
return newstring

``````
``````

In [30]:

# test reverse
print reverse("hello") # prints elloh
assert reverse("I am testing") == "gnitset ma I"

``````
``````

olleh

``````

8) Define a function is_palindrome() that recognizes palindromes (i.e. words that look the same written backwards). For example, is_palindrome("radar") should return `True`.

``````

In [31]:

def is_palindrome(astring):
if astring == reverse(astring):
return True
else:
return False

``````
``````

In [32]:

def is_palindrome(astring):
return astring == reverse(astring)

``````
``````

In [35]:

# test is_palindrome
print is_palindrome("kayak") # prints True
print is_palindrome("octopus") # prints False
assert is_palindrome("eggplant") == False

``````
``````

True
False

``````

9) Write a function is_member() that takes a value (i.e. a number, string, etc) x and a list of values a, and returns `True` if x is a member of a, `False` otherwise. (Note that this is exactly what the in operator does, but for the sake of the exercise you should pretend Python did not have this operator.)

``````

In [50]:

def is_member(element, alist):
for other_element in alist:
if other_element == element:
return True
return False

``````

10) Define a function overlapping() that takes two lists and returns True if they have at least one member in common, False otherwise. You may use your is_member() function, or the in operator, but for the sake of the exercise, you should (also) write it using two nested for-loops.

``````

In [51]:

def overlapping(list1, list2):
for element in list1:
if is_member(element, list2):
return True
return False

``````
``````

In [55]:

def overlapping(list1, list2):
for element in list1:
for other_element in list2:
if element == other_element:
return True
return False

``````
``````

In [56]:

print overlapping([1,2,3],[3,4,5])
print overlapping([1,2,3],[4,5,6])

``````
``````

True
False

``````

11) Write a function is_subseq(alist, anotherlist) that returns `True` if alist is a subset of anotherlist, `False` if it isn't.

``````

In [57]:

def is_subseq(alist, anotherlist):
al_length = len(alist)
for pos in range(0, len(anotherlist) - al_length + 1):
sub_list = anotherlist[pos:pos+al_length]
if alist == sub_list:
return True
return False

``````
``````

In [58]:

# test is_subseq
print is_subseq([1,2], [5,4,1,2]) # prints True
print is_subseq([1,1], [5,4,1,2]) # prints False
assert is_subseq([1,2], [1,2,3,4]) == True
assert is_subseq([0,1], [1,2,3,4]) == False

``````
``````

True
False

``````
``````

In [ ]:

``````