Project 0: Unix/Python Tutorial
(Thanks to John DeNero and Dan Klein.)
Introduction
There are two primary objectives of this project: get a basic understanding of Python, and familiarize yourself with the grading environment of the class.
Objective 1
Checkout the files for this project based on
instructions here. Edit the file
email.txt
and, if you wish,
project0/codename.txt
. Then check those changes in.
Objective 2
If you are unfamiliar with Python, check out
this Python tutorial for the class.
To test your basic understanding of Python and the submission software, complete the following two problems.
Problem 1: Add a buyLotsOfFruit(orderList)
function to buyLotsOfFruit.py
which takes a list of (fruit,pound)
tuples and returns
the cost of your list. If there is some fruit
in the list which
doesn't appear in fruitPrices
it should print an error message and
return None
(which is like nil
in Scheme).
Please do not change the fruitPrices
variable.
Test Case: We will check your code by testing that the script correctly outputs
Cost of [('apples', 2.0), ('pears', 3.0), ('limes', 4.0)] is 12.25
Problem 2 (for submission): Fill in the function shopSmart(orders,shops)
in shopSmart.py
, which takes an orderList
(like the kind passed in to FruitShop.getPriceOfOrder
) and a list of FruitShop
and returns the FruitShop
where your order costs the least amount in total. Don't change the file name or variable names, please. Note that we will provide the shop.py
implementation as a "support" file, so you don't need to submit yours.
Test Case: We will check that, with the following variable definitions:
orders1 = [('apples',1.0), ('oranges',3.0)]
orders2 = [('apples',3.0)]
dir1 = {'apples': 2.0, 'oranges':1.0}
shop1 = shop.FruitShop('shop1',dir1)
dir2 = {'apples': 1.0, 'oranges': 5.0}
shop2 = shop.FruitShop('shop2',dir2)
shops = [shop1, shop2]
The following are true:
shopSmart.shopSmart(orders1, shops).getName() == 'shop1'
and
shopSmart.shopSmart(orders2, shops).getName() == 'shop2'
Results
After you have completed one or both of the problems, check to make sure they provide the proper output on
the results page