# Week 5

## 0 Finish last weeks stuff!

There were a lot of exercises last week, try and finish the for/while loop exercises before attempting this weeks material on functions (don't worry about completing the challenge problems though).

## 1 Fun with Functions

### 1.1 Maximal entertainment <a href="#maximal-entertainment" id="maximal-entertainment"></a>

Create a function which takes in a list and prints out the biggest value in the list (**don't** use pythons max() function!)

**Extension**

Instead, **return** the maximum value and print it outside of the function

### 1.2 Sum thing to do <a href="#sum-thing-to-do" id="sum-thing-to-do"></a>

Create a function which accepts a **list** of numbers and prints the **sum** of all the numbers

**Extension**

Get your function to return the **average** value in the list (You'll want to use len())

**1.3 Developing a range of skills**

Create a function which mimics the function of range(), by returning a list of integers from the minimum value to the maximum value - 1 (i.e. my\_range(min, max))

**Extension 1**

Use **default arguments** such that if the "min" argument is not given, the function starts counting from zero

**Extension 2**

Try and implement the range function using recursion (you can use another function to do the actual list creation, if you like, so long as it uses recursion!)

## 2 Import-ant Syntax

Import the following two packages, renaming them, such that you can get the following code snippet to run:

* Import "numpy", renamed to "np"
* Import the "pyplot" module from the "matplotlib" package, renamed to "plt"

Then run:

```python
# Scary block of awful code
plt.scatter([0.35 * (2/7) + 0.15, 0.5 - 0.35 * (2/7) ], [2, 2], c='b', marker='s', s=300 )
plt.scatter(0.325, 0.75, c='k', marker='^', s=150);l = np.arange(0.15, 0.51, 0.01)
plt.plot(l ,np.sin(np.linspace(np.pi, 2*np.pi, len(l))), c="r")
plt.axis('off');plt.margins(0.25);plt.title("?sracs eseht tog I woh wonk annaW"[::-1])
plt.show()
```

You'll know when it's working ;)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://python.afspies.com/exercises/week-5.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
