Python Foundations, Lab 3: Practice with Functions¶
Instructor: Wesley Beckner
Contact: wesleybeckner@gmail.com
Solved: notebook
In this lab we will continue to practice writing functions
✍🏽 L3 Q1: Basic Function Writing¶
Part A¶
Write a Python function to find the maximum of three numbers
# Cell for L3 Q1 A
Part B¶
Write a Python function to multiply all the numbers in a list
Example:
Sample List : (8, 2, 3, -1, 7)
Expected Output : -336
# Cell for L3 Q1 B
Part C¶
Write a Python program to reverse a string
Example:
Sample String : "1234abcd"
Expected Output : "dcba4321"
# Cell for L3 Q1 C
❄️ L3 Q2: Finding Unique Elements¶
Write a Python function that takes a list and returns a new list with unique elements of the first list
Example:
Sample List : [1,2,3,3,3,3,4,5]
Unique List : [1, 2, 3, 4, 5]
# Cell for L3 Q2
❗ L3 Q3: Computing Factorials¶
Write a Python function to calculate the factorial of a number (any non-negative integer). The function accepts the number as an argument
Example:
Input: 4
Output: 24
# Cell for L3 Q3
Practicing our hand at functions by implementing recursion¶
We will practice the last exercise we did yesterday, this time using what we've learned about functions to write a recursive function
A recursive function is a function that makes a call to itself. This is particularly well suited for tasks that would otherwise require a lot of memory to hold intermediary solutions (when they are combined with a strategy called memoization which we will shy away from here). The Fibonnaci sequence is a good place for such a problem. So is a factorial calculation. See here below
def factorial(x):
"""This is a recursive function
to find the factorial of an integer"""
if x == 1:
return 1
else:
# one trick to note that is common with recursive functions
# is that the incrementation in the key variable is done
# in the call to the function itself (vs a for loop)
return (x * factorial(x-1))
n = 3
factorial(n)
6
In the above, we have on lines 5 and 6, what we call the baseline solution. It is the answer to the simplest subset of the problem. When we build a recursive tree, it is useful to think of the smallest problem, and work upwards, providing this leaf solution to nodes further up on the recursive tree. Like so:
# 1! = 1
# 2! = 2 * 1!
# 3! = 3 * 2!
# N! = N * (N-1)! ... like ... like so
This problem is intended to be a fun way to wrap our heads around functions... don't stress. If you want to see a further breakdown of the factorial problem, check out this link
🛺 L3 Q4: Recursive Functions¶
Using recursion, complete the Fibonacci sequence up to the 10th place using recursion and any or all of the following:
if
elif
else
range
The Fibonacci sequence with indices:
0. 0
1. 1
2. 1
3. 2
4. 3
5. 5
6. 8
7. etc..
Example input:
index = 9
Example output:
Index: 9
Value: 34
# Cell for L3 Q4