Quiz 5 Information
Quiz details
-
Quiz 5 will be held on Thursday 8/7, at a time that you will schedule with your facilitator (links below).
-
You will have 15 minutes for the quiz including writing and testing your code, and submission to Gradescope.
-
Expect 2 short questions. Each will ask you to write a function to solve a problem.
-
This quiz is closed notes/closed books, and without any use of reference materials.
-
There are some sample/pratice questions at the bottom of this page.
Quiz Logistics
-
The quiz will be a live proctored quiz conducted over Zoom.
-
You will meet your facilitator over Zoom and initiate a screen share of your entire desktop. If you have multiple monitors, you must disconnect any secondary monitor before the quiz.
-
Your camera must remain on during the quiz.
-
The facilitators will record all Zoom quiz sessions.
-
-
Use this Calendly link to schedule a time to take the quiz with your facilitator:
-
You should take the quiz by yourself in a quiet room, without assistance from others and without using resources of any kind.
-
You may not communicate with anyone during the quiz. You must not discuss the quiz with classmates until the entire quiz window is closed. Any discussion creates an unfair advantage to students who take the quiz a later time.
-
Aside from the machine on which you are reading the quiz, you must turn off and put away all other electronic devices including your phone, tablets, headphones, etc.
-
You will use Spyder (or another IDE) to write and test your code. Before you begin, you should create an empty file named
quiz5.py, and close all other Spyder windows (including the console if there is any previous activity). You may run test code and use the console at that time. -
Other than Zoom and Spyder, all other applications should be closed.
-
You may not use ChatGPT or any other AI tools to write solutions for this quiz.
-
Anyone using ChatGPT or other AI tools will receive an automatic grade of F in the course, without exception or the right to appeal.
-
The instructor reserves the right to conduct a separate one-on-one oral examination with any student to verify the student’s understanding of the material.
-
Material covered
The quiz will focus on the material that we have discussed in class during Week 5, modules 9 and 10. You must be familiar with concepts that were introduced in the pre-class videos, in-class discussion, or on the problem sets that were not covered in the videos or readings. These topics include:
-
User defined classes
-
Constructor, data attributes, string representation, methods, client code
Preparing for the quiz
-
One way to prepare is to review the videos and readings and class notes and make a summary of the key points in your own words. “Summarizing” the material in this way is a great way to ensure that you really understand the key concepts.
-
We also encourage you to do practice problems. Options include:
-
redoing the problems from the problem sets
-
additional practice problems (below)
-
-
When working on practice problems, try to come up with your answers on paper, rather than through a trial-and-error approach in Spyder or in another programming environment. This will be give you an experience that is similar to the one that you have during the quiz.
-
Feel free to post questions about the quiz on Piazza (using the
quiz5tag).
Additional practice problems
-
Create a Python class called
Triangle. The constructor for this class should take two arguments,baseandheight, and store those values in appropriately named attributes. In addition, you should add a method calledareathat computes and returns the area of the triangle. (The area of a triangle is 0.5 times the product of its base and height.) For example:>>> tri = Triangle(3, 4) >>> tri.area() 6.0
-
Add a method to your
Triangleclass that enables you print aTriangleobject in a readable way. For example:>>> tri = Triangle(3, 4) >>> print(tri) triangle with base 3 and height 4
-
Add a method to your
Triangleclass that will allow you to use the==operator to test if twoTriangleobjects are equal–i.e., if they have the same base and height. For example:>>> tri1 = Triangle(3, 4) >>> tri2 = Triangle(3, 4) >>> tri3 = Triangle(4, 3) >>> tri1 == tri2 True >>> tri1 == tri3 False
-
Write a function called
mainthat creates three triangle objectstri1(with base 3 and height 4),tri2(with base 6 and height 6), andtri3(also with base 3 and height 4). The function should print the three objects and their areas. Next, it should test whethertri1andtri2are equal and report the result. Finally, it should test whethertri1andtri3are equal and report the result. Your function should take full advantage of theTrianglemethods you have written. Here is the desired output:>>> main() tri1: triangle with base 3 and height 4 (area = 6.0) tri2: triangle with base 6 and height 6 (area = 18.0) tri3: triangle with base 3 and height 4 (area = 6.0) tri1 and tri2 are not equal tri1 and tri3 are equal
-
Create a Python class named
Phonebookwith a single attribute calledentries. The constructor should initializeentriesto be a dictionary containing the following names and phone numbers:
Bob 72345, Sally 71000, John 79999. Use the names as the keys of the dictionary and the phone numbers (which you should represent asints) as the values. -
Add a method named
containsto yourPhonebookclass. It should take a parameternameand returnTrueifnameis present in the phonebook, andFalseotherwise. For example:>>> book = Phonebook() >>> book.contains('Foo') False >>> book.contains('Bob') True -
Write another method for your
Phonebookclass callednumber_forthat takes a parameternameand returns the phone number fornamein the calledPhonebookobject. It should return-1ifnameis not found. Here is an example:>>> book = Phonebook() >>> book.number_for('Sally') 71000 >>> book.number_for('foobar') -1Hint: Consider using your
containsmethod from problem 8. -
Write another method for your
Phonebookclass calledadd_entrythat takes as parameters anameand anumberand adds an appropriate entry to the phonebook. For example:>>> book = Phonebook() >>> book.number_for('Turing') -1 >>> book.add_entry('Turing', 77777) >>> book.number_for('Turing') 77777