Assessment 9: Writing and Modifying Complex Programs
This assessment is designed to be completed in fifty minutes or less. Your code must work on any valid inputs to receive credit.
Complete the template below such that you will provide code to solve the following problems. When you are satisfied with your solution,
you should upload your solution to Marmoset. Marmoset will grade your solution within about a minute; you
may modify your solution and resubmit while taking this assessment to get a higher score as necessary.
This final assessment will ask you to write and/or extend your project 5 solution.
You will have to do the following for this assignment:
- Create and complete the methods of the
- Create the
- Modify the
main function in
You will be creating a
PriceException class that extends the
Exception class with the following methods. Later,
you will modify your
main method to use this class. Write the following methods for the
A constructor that takes a message as an argument. The constructor creates this attribute, and sets it to the incoming argument. The constructor also
initializes an empty list of items.
A to-string method that can be called with
str(...), which returns the message of the exception.
You will write a function called
You will write a function called
processFile that takes as argument a filename, and opens that file and returns its
contents, as a list of strings.
Finally, modify your
Sort both the items of a shipment, and the shipments themselves, before returning the list of shipments. Items are to be sorted by
their name in alphabetical order, while shipments are to be sorted by their ids in numeric order (ascending).
If two items or shipments have the same value used for sorting, you can sort them either way.
Make sure NOT to use the
sorted or any other built-in sorting method, as these will not work the way you want them to
work for objects.
You may also modify the classes you wrote as necessary.
PriceException (the new class you just wrote) when there is something
wrong with just the price read in; otherwise, if the price is right (haha!) but the item is still wrong, continue to raise an
Testing Your Code
Please log in to get access to the driver. This driver already contains the tests, and will tell you which test number you're failing; look at the source code of the driver to
see the details of that test. You can run the driver through
the terminal with the command"
This will test your code on the same test cases as Marmoset, and give you a report. Once you've passed as many tests as you can, upload your
submission to Marmoset using the instructions at the bottom of the page.
For this assessment there is no template to download; you will be using your own
Download the supporting file SystemCall for this assessment. Right-mouse click
to save the file as
Download the supporting file code supporting file for this assessment. Right-mouse click
and save the file as
You may also refer to the template for writing classes.
Upload your files called
code.py to Marmoset using the link to assessment9_sample. Make sure you click the correct link,
as there are ten versions of this assessment, and your answers will only work for one of them.
See the instructions below to walk you through how to upload a file to Marmoset.
[Marmoset upload help] (opens in new window)