Computer Sciences Department logo

CS 368-4 (2012 Fall) — Day 3 Homework

Due Thursday, November 1, at the start of class.


Write a Python script that gathers input data and calculates statistics.


Use the Python that you have learned to write a simple data analysis tool.

The script will ask the user for some data observations, each of which consists of one text label and its associated numeric value. For example, I entered U.S. states (labels) and their 2010 populations (values). After some input, the script might have the following data (populations are in thousands):


The script should cycle through the following steps:

  1. Display a list of the current labels and values
  2. Display some summary statistics about the data
  3. Ask the user for another item and then the corresponding value
  4. Store the label and value

A typical interaction might look like the following. The exact formatting is not required. In this sample interaction, the yellow highlighting shows what the user typed.


Label? Wisconsin
Value? 5687


Wisconsin: 5687.00

Count:       1
Sum:      5687.0
Mean:     5687.0

Label? Illinois
Value? 12831


Illinois: 12831.00
Wisconsin: 5687.00

Count:       2
Sum:     18518.0
Mean:     9259.0


How the user will quit the script? Maybe if the label input is the empty string? Maybe a special label or value that tells the script to quit? Pick something and implement it.

The program should not attempt to save its state. That is, when you quit the program and run it again later, it will start with no observations.

Tip: If the user enters the same item a second time, it should replace the original item; that is, you do not need to check to see if an item already exists, just store the data.

Tip: If the user tries to enter the same item more than once, but spells it differently, it will end up being a separate item. That is, your script does not need to be clever or fancy about item names — just accept what the user types.


Testing your code is very important! If you do not run your code, you will make mistakes and probably not receive full credit. And even just running your code once may not be enough. Try different cases and make sure things work as you expect.

Here are some specific tests to consider:

Extra Challenges

If the requirements above were easy, try one or more of the following challenges. No extra credit, just extra learning!

  1. Calculate and display additional statistics: minimum value, maximum value, standard deviation from the mean, ….
  2. Add the ability to delete items from the observations. How does the user indicate that an item should be deleted? Maybe just a blank value? What if that item is not in the data already?
  3. [Hard:] Display a simple text histogram for your data. It is easiest to use a horizontal bar chart, perhaps something like this:
    -------  ---------+---------+---------+
    10M-15M  XXX
    15M-20M  XX
    25M-30M  X
    35M-40M  X
  4. [Hard:] How could you display the observations in the order that the user entered them (assuming that it does not do so already)?


Start your script the right way! Here is a suggestion:

#!/usr/bin/env python

"""Homework for CS 368-4 (2012 Fall)
Assigned on Day 03, 2012-10-29
Written by <Your Name>

Do the work yourself, consulting reasonable reference materials as needed. Any resource that provides a complete solution or offers significant material assistance toward a solution not OK to use. Asking the instructor for help is OK, asking other students for help is not. All standard UW policies concerning student conduct (esp. UWS 14) and information technology apply to this course and assignment.

Hand In

All homework assignments must be turned in by email! Attach your Python script to the email as a text .py file. See the email page for more details about formatting, etc.