Quiz 4 Study Guide
You are responsible for all material covered through the end of Week 8 (Searching).
In addition to all concepts from Quiz 3, you should understand the following:
Python concepts
-
common string methods:
upper(),lower(),split(), andstrip() -
adding to a list with the
append()method -
top-down design
-
bottom-up implementation
-
stubbed-out (prototyped) functions
-
list of lists
-
searching: linear search and binary search
-
analysis of algorithms/big-O notation:
-
O(log N) — logarithmic (ex: binary search)
-
O(N) — linear (ex: linear search)
-
Practice problems
-
The following
get_numbers(n)function doesn’t work. Find and fix the bug in the code below.def get_numbers(n): """ Purpose: Read n numbers from the user and return them as a list Parameters: n -- the number of values to read from the user (integer) Return: a list of the numbers entered by the user """ for i in range(n): value_list = [] value = int(input("Enter a number: ")) value_list.append(value) return value_list -
Given the assignments for
SandL, what is the value and type of each expression?S = "ab-cd-ef" L = ["This is", "a list with", "some words", "inside of it"] data = [['PA', 20], ['NJ', 14], ['OH', 18], ['WI', 10]] VALUE TYPE ----- ---- len(L) len(L[0]) len(S) "some" in L[2] "cd" in S L[1][0] S.upper() S.split('-') S < "ZEBRA" data[0] data[0][1] data[2][0] < data[3][0] -
Assume you have these two functions already written:
-
getPick()asks the user for "r,p,s?" and returns:-
"rock" if they enter r
-
"paper" if they enter p
-
"scissors" if they enter s
-
-
winner(user,comp)returns:-
"user" if user won the game (e.g., user="rock", comp="scissors")
-
"comp" if comp won the game (e.g., user="rock", comp="paper")
-
"tie" if it’s a tie game (e.g., user="rock", comp="rock")
Write a main() function that uses the above functions to play one round of rock-paper-scissors. Here are a few sample runs of the program:
$ python3 rps.py r,p,s?: r Computer chose rock tie... $ python3 rps.py r,p,s?: r Computer chose paper Computer wins! $ python3 rps.py r,p,s?: r Computer chose scissors You win!
-
-
-
Write the stub for the
winner(user, comp)function. -
Write the implementation for the
getPick()function. YourgetPick()function should only accept r, p, or s from the user. If they enter anything else, print an error message and ask again.r,p,s?: w please enter r, p, or s!!! r,p,s?: zebra please enter r, p, or s!!! r,p,s?: r
-
True/False questions:
-
Linear search requires a number of steps proportional to the size of the list being searched (T/F)
-
The python
inoperator performs a binary search (T/F) -
Binary search is an O(N) algorithm (T/F)
-
The number of times N can be divided by 2 before reaching 1 is the log (base 2) of N (T/F)
-
-
How many steps would it take to do binary search on a list of size 1 million, when the item you are searching for is NOT in the list?
-
How many steps would it take to do linear search on a list of size 1 million, when the item you are searching for is NOT in the list?
-
Binary search is much faster than linear search, so why don’t we use it for every search problem?
-
For each iteration of the loop in
binarySearch(x, L), show the index values forlow,high, andmid, and the value stored at locationmid. What will be returned by this function call?x = 67 L = [10, 12, 14, 21, 37, 44, 45, 46, 58, 67, 99] 0 1 2 3 4 5 6 7 8 9 10 low | high | mid | L[mid] | comparison - - - - - - - - - - - - - - - - - - - - | | | | | | | | | | | | | | | | -
For each iteration of the loop in
binarySearch(y, L), show the index values for low, high, and mid, and the value stored at location mid. What will be returned by this function call?y = 4 L = [10, 12, 14, 21, 37, 44, 45, 46, 58, 67, 99] 0 1 2 3 4 5 6 7 8 9 10 low | high | mid | L[mid] | comparison - - - - - - - - - - - - - - - - - - - - | | | | | | | | | | | | | | | |