15.8. Rainfall Problem¶
Let’s imagine that you have a list that contains amounts of rainfall for each day, collected by a meteorologist. We want to figure out the average rainfall from the list. However, her rain gathering equipment occasionally makes a mistake and reports a negative amount for that day. We have to ignore those.
We will build the program gradually in the following steps:
15.8.1. Rainfall Step 1¶
First, lets not worry about filtering out the bad values or finding the average. Let’s just calculate the total of the values in the list.
We will write the code in a function
getRealAvg so that it is easier to test
with different possible lists of data - we will get a different list for each month of data,
so we need our program to work correctly for any list it is given. This function
should add all of the values in
rainList to the variable
sumRain which will be
the answer it returns.
Right now that name is not accurate because we are not calculating the average yet, but it will be an appropriate name when we complete the program.
While working on the program, you may want to use codelens or print out information so you can see what is happening as the code runs. You can also comment out one of the two tests to focus on the other one.
15.8.2. Rainfall Step 2¶
Now, let’s worry about about ONLY adding the values of the numbers that aren’t negative
to the total. You can copy your code from part 1 and use it to get started here. Then
add logic so that you only add each value to
sumRain if it is 0 or more.
Hint: The if condition needs to be checked for each value in the list. You must nest
if inside the
Again, use codelens or print statements to understand what your code is doing. You may want to print each value that you add to the list so you can see if the right ones are being included.
15.8.3. Rainfall Step 3¶
To get the average, we need to know how many values we have added up. If we were using
all of the values, we could simply do
len(rainList). But since we only are going
to use some of the values, we need to calculate how many there are.
We will make a variable
count and use that to keep track of the number of items.
Add the code you have written so far to the program below. Then add code so that each
time you add a value to
sumRain, you add 1 to count.
For now, we will just return the
count so we can see if this new code is working
correctly. Leave the code for
sumRain there, once we are sure the count is correct
we will use both values to get the average.
Again, use codelens or print statements to understand what your code is doing.
15.8.4. Rainfall Finished¶
Now that we know we have the right sum and count, you can finish the function by returning the average from the function. Use the code you have already written, but write new code to calculate and return the average.