One of the first functions we write in this exercise is `average`

. The next function we write is `get_average`

which depends upon the `average`

function to do its job. Neither of these functions are built in, just temporarily present in the namespace.

The last function in the sequence is `get_class_average`

which depends upon both of the other two functions.

```
def average():
'''
function to return the mean value, or average of a list of numbers
inputs => numeric list data
dependencies => none
'''
def get_average():
'''
function to return a weighted average of averages for one student
inputs => dictionary containing multiple numeric lists
dependencies => average
'''
def get_class_average():
'''
function to return a single mean value with entire class as inputs
inputs => identifier list pointing to individual dictionaries
dependencies => get_average, average
'''
```

The above is the scaffold of what was described earlier.

Note: What is described as `class`

in this exercise refers to a classrom, not a program construct. Eg.

`students = [] # class list`

The function that takes a dictionary is `get_average`

so let's take a look at that..The parameter `student`

expects an individual dictionary.

```
def get_average(student):
'''
average for homework times 0.1
average for quizzes times 0.3
average for tests times 0.6
sum of the above is returned
'''
```

Unpacking the dicitonary means referring to it by the parameter name.

`student['homework']`

and so on. You will want the average of all three, using `average()`

. The most common approach, possibly in the instructions being the reason, is to store each average in a variable as the computed amount, then return their sum.

```
'''
average for homework times 0.1
'''
homework = average(student['homework']) * 0.1
```