# Don't know what's wrong with my code - 5/9

#1

Instructions:

My code:

def average(numbers):
[indent] total = sum(numbers)
[indent] float(total) / len(numbers)
[indent] return average(numbers)

I searched this exercise in these forums and saw that someone else had about forty lines of code for this problem. One of the mods recommended using a `for`-loop to make it more elegant, but… the instructions don’t tell me to do anything like that. Am I supposed to incorporate those dictionaries above my code somehow into this actual code? It seems like the object here is to define a function to find averages, not to actually find the averages.

#2

Hey there.

Student Becomes The Teacher is a pretty tricky lesson, as it’s intended to make you think about what you’ve learned up to that point and apply it to a problem with less prompting from Codecademy than you’ve had previously.

I note you’ve not mentioned whether you’re getting an error, other than the red checkbox, or what it is if you are, but if we look at your code…

``````def average(numbers):
total = sum(numbers)
float(total) / len(numbers)
return average(numbers)
``````

…we can see whether you’ve met the requests that the exercise is making.

• Define a function called `average` that has one argument, `numbers`: Done.
• Inside that function, call the built-in `sum()` function with the `numbers` list as a parameter. Store the result in a variable called `total`: Check.
• … use `float()` to convert `total` and store the result in `total`: You’re being a bit DRY and combining this and the next step…
• Divide `total` by the length of the numbers list. Use the built-in `len()` function to calculate that: Done on line 3, but where is this new value going??
• Return that result:. If we look closely at your function’s `return` statement, what exactly is it you’re returning?

I’d say you’re a good 80% of the way to cracking this one, there’s just a few little things missing from your code and you’ve nailed it.

#3

Thank you for this, I’ll dig in and see if I can’t figure those parts out.

I don’t actually understand what `return` does, I only know enough to write `return function_name` at the end of my functions when the instructions tell me to do it. I think it actually runs the function? Or prints something?

Aside: How do you get text to indent in this editor? I always have to write “[indent]” when I’m pasting my code into this text editor.

#4

Oh and the error I’m getting is at the bottom of the editor:

average([3, 0]) resulted in an error: maximum recursion depth exceeded while calling a Python object

Edit: When I set `total` equal to `float(total)` I get this error:

File “python”, line 24
SyntaxError: can’t assign to function call

#5

I made a mistake in my previous post, which I’ve corrected. Hopefully it’ll be a bit clearer where the error is.

If you want to paste in code and preserve the formatting, you can put ``` before and after the code and it’ll render like this:

``````code stuff
i have remembered my indent
im also indented
``````

I think you’re using the blockquote `>` character. ( ` is the key above tab, on my keyboard. Probably the same on most others, I imagine. Maybe not on a laptop?)

On the subject of `return`

A function is essentially a reusable block of code that performs a specific job. In our case here, the function `average` takes some input in the form of `numbers`, does some stuff with that input, and then provides you with a result - the average of the numbers you gave it.

`return` is simply the mechanism by which you’re telling Python to go back to wherever the function was called from, with a result (or output) if that’s appropriate.

To put it in terms of a real-world analogy, let’s imagine that you have a colleague at work who is turning 40 and you and the team want to get them a really nice cake from an amazing bakery near the office.

In this analogy, you’re giving the bakery money and your requirements and after a bit of work they give you a cake. We could say…

``````budget = 60
my_requirements = {
"dietary" : "No peanuts",
}

def bake_me_a_cake(cash, requirements):
delicious bakery magic here
return cake

my_cake = bake_me_a_cake(budget, my_requirements)
``````

and so your cake (that is, the variable `my_cake`) comes out of the bakery by means of the `return` statement.

Does that help?

#6
``````numbers = [1,2,3]
def average(numbers):
total = sum(numbers)
av = float(total) / len(numbers)
return av
``````

This code will give you the average of a list of numbers. `av = float(total) / len(numbers)` gives you a single number (the average).
When we return `av` we get that number.

We can display that number by calling `print average(numbers)`
We can also use that number in other ways for example

``````ave_plus1 = average(numbers) + 1
print ave_plus1
``````

Try to understand how return works
Here is an example that may make it more clear.

``````def return_3():
a = 1
b = 2
c = 3
return c

print return_3()   #outputs 3
d = return_3() + 1
print d #outputs 4
``````

#7

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.