Homework #5
Due Date: May 14, 2009 
Points: 100 
Written Exercises

(5 points each) Consider this very simple function:
def cube(x):
answer = x * x * x
return answer
 What does this function do?
 Show how a program could use this function to print the value of
y^{3}, assuming y is a variable.
 Here is a fragment of a program that uses this function:
answer = 4
result = cube(3)
print answer, result
The output from this fragment is 4 27. Explain why the
output is not 27 27, even though cube seems to change the
value of answer to 27.
[text, §6.8, Discussion problem 5]

(15 points) Here is a statement with lots of nesting:
if a > b:
if b > c:
print "First"
else:
print "Second"
elif b > c:
if a >= c:
print "Third"
elif a < b:
print "Fourth"
else:
print "Fifth"
else:
if a == b:
print "Sixth"
else
print "Seventh"
Eliminate the nesting by combining conditions appropriately, using
“and” and “or” as needed.
Programming Exercises
Remember to turn in your error logs and refinement files.

(20 points) The body mass index (BMI) is calculated as a person’s
weight (in pounds) times 720, divided by the square of the person’s
height (in inches). A BMI in the range 19–25, inclusive, is considered
healthy for most people (as always, consult your doctor to determine if
your BMI is considered healthy for you). Write a program that calculates
a person’s BMI and prints a message telling them whether they are above,
within, or below the healthy range given above. Your program is to take
as input a single line with weight first, a comma, and then height.
Please turn in the program in the file bmi.py.
[text, §7.7, Programming Exercises problem 5, modified]

(20 points) Write a function to determine whether a year, given
as the argument, is a leap year. A year is a leap year if it is
divisible by 4, unless it is divisible by 100 and not 400. So 2000 was a
leap year, but 2100 and 2200 will not be. Then write a program that asks
the user to enter a year and uses the function you wrote to determine
whether the year is a leap year. The program then prints the result.
Please turn in the program in the file leap.py.
[text, §7.7, Programming Exercises problem 5, modified]

(30 points) The greatest common divisor (GCD) of two integers m
and n is the largest number that divides evenly into both of them. For
example, the GCD of 12 and 15 is 3, and of 16 and 40 is 8. Write a
program that asks the user to enter two integers, then calculates and
displays their GCD. Please turn in your program in the file gcd.py.
Hint: The classic algorithm for computing the GCD, known as Euclid’s
Algorithm, goes as follows. Let m and n be variables containing the two
numbers. Divide m by n. Save the divisor (that is, n) in m, and save the
remainder in n. If n is 0, stop; m contains the GCD. Otherwise, repeat
the process, starting with the division of m by n.
Extra Credit (Programming)
Remember to turn in your error logs and the refinement file.

(20 points) The National Weather Service computes the windchill
index using the following formula:
35.74 + 0.6215T − 35.75(V^{0.16}) + 0.4275T(V^{0.16})
where T is the temperature in degrees Fahrenheit and V is the
wind speed in miles per hour.
Write a program that prints a nicely formatted table of windchill
values. Rows should represent wind speed for 0 to 50 in 5 mph
increments, and the columns should represent temperatures from −20 to +60 in
10degree increments. Your program must use the above formula to compute
the entries in the table. Please turn in your program in the file
chill.py.
[text, §8.7, Programming Exercises problem 2, modified]