# Homework 1: Functions

*Due by 11:59pm on Wednesday, September 11*

## Instructions

Download hw01.zip.

**Submission:** When you are done, submit the assignment by uploading all code files you've edited to Gradescope. You may submit more than once before the deadline; only the
final submission will be scored. Check that you have successfully submitted
your code on Gradescope. See Lab 0 for more instructions on
submitting assignments.

**Using Ok:** If you have any questions about using Ok, please
refer to this guide.

**Readings:** You might find the following references
useful:

**Grading:** Homework is graded based on
correctness. Each incorrect problem will decrease the total score by one point.
**This homework is out of 2 points.**

## Getting Started Videos

These videos may provide some helpful direction for tackling the problems on this assignment.

To see these videos, you should be logged into your berkeley.edu email.

# Required Questions

### Q1: A Plus Abs B

Python's `operator`

module contains two-argument functions such as `add`

and
`sub`

for Python's built-in arithmetic operators. For example, `add(2, 3)`

evalutes to 5, just like the expression `2 + 3`

.

Fill in the blanks in the following function for adding `a`

to the
absolute value of `b`

, without calling `abs`

. You may **not** modify any
of the provided code other than the two blanks.

```
def a_plus_abs_b(a, b):
"""Return a+abs(b), but without calling abs.
>>> a_plus_abs_b(2, 3)
5
>>> a_plus_abs_b(2, -3)
5
>>> a_plus_abs_b(-1, 4)
3
>>> a_plus_abs_b(-1, -4)
3
"""
if b < 0:
f = _____
else:
f = _____
return f(a, b)
```

Use Ok to test your code:

`python3 ok -q a_plus_abs_b`

Use Ok to run the local syntax checker (which checks that you didn't modify any of the provided code other than the two blanks):

`python3 ok -q a_plus_abs_b_syntax_check`

### Q2: Two of Three

Write a function that takes three *positive* numbers as arguments and returns
the sum of the squares of the two smallest numbers. **Use only a single line
for the body of the function.**

```
def two_of_three(i, j, k):
"""Return m*m + n*n, where m and n are the two smallest members of the
positive numbers i, j, and k.
>>> two_of_three(1, 2, 3)
5
>>> two_of_three(5, 3, 1)
10
>>> two_of_three(10, 2, 8)
68
>>> two_of_three(5, 5, 5)
50
"""
return _____
```

Hint:Consider using the`max`

or`min`

function:`>>> max(1, 2, 3) 3 >>> min(-1, -2, -3) -3`

Use Ok to test your code:

`python3 ok -q two_of_three`

Use Ok to run the local syntax checker (which checks that you used only a single line for the body of the function):

`python3 ok -q two_of_three_syntax_check`

## Check Your Score Locally

You can locally check your score on each question of this assignment by running

`python3 ok --score`

**This does NOT submit the assignment!** When you are satisfied with your score, submit the assignment to Gradescope to receive credit for it.

# Submit Assignment

Submit this assignment by uploading any files you've edited **to the appropriate Gradescope assignment.** Lab 00 has detailed instructions.