← return to practice.dsc10.com

The problems in this worksheet are taken from past exams. Work on
them **on paper**, since the exams you take in this course
will also be on paper.

We encourage you to complete this
worksheet in a live discussion section. Solutions will be made available
after all discussion sections have concluded. You don’t need to submit
your answers anywhere.**Note: We do not plan to cover all
problems here in the live discussion section**; the problems we don’t
cover can be used for extra practice.

Suppose we have imported the `math`

module using
`import math`

. Consider the nested expression below:

`int(math.sqrt(math.pow(4 * 2 ** 4, min(9 % 4, 9 / 4, 9 - 4))))`

How many function calls are there in this expression? How many arguments does each function have?

**Answer:** 4 function calls: one argument for
`int()`

, one for `math.sqrt()`

, two for
`math.pow()`

, three for `min()`

.

There are four function calls. One is a call to the type-conversion
function `int()`

, which takes one argument. Another is a call
to `math.sqrt()`

, which takes one argument. Another is a call
to `math.pow()`

, which takes two arguments. Finally is a call
to the built-in function `min()`

, which in this case takes
three arguments, but generally can take two or more arguments.

What does this expression evaluate to?

**Answer:** 8

For nested evaluation, it is helpful to work from the inside out.
Let’s evaluate some arithmetic expressions first. `9 % 4`

evaluates to `1`

because when we divide `9`

by
`4`

, there is a remainder of `1`

. Additionally,
`9 / 4`

evaluate to `2.25`

, and `9 - 4`

evaluates to `5`

. Starting with the inner most function call,
we see `min(9 % 4, 9 / 4, 9 - 4)`

is equiavlent to
`min(1, 2.25, 5)`

which evaluates to `1`

.

The next-most inner function call is the call to
`math.pow()`

which takes two arguments: a number for the
base, and a number for the exponent. We’ve already evaluated the
exponent, but we need to evaluate the base of `4 * 2 ** 4`

.
Using the order of operations, we know we need to evaluate the exponent
first. So `4 * 2 ** 4`

is equivalent to `4 * 16`

or `64`

.

Therefore,
`math.pow(4 * 2 ** 4, min(9 % 4, 9 / 4, 9 - 4))`

simplifies
to `math.pow(64, 1)`

, which Python evaluates to be
`64.0`

, a `float`

.

Next, `math.sqrt(64.0)`

evaluates to `8.0`

.
Finally, the type conversion function `int(8.0)`

evaluates to
`8`

.

After a trip to the zoo, Anthony wrote the following block of code.

```
= 5
zebra = 4
lion = 1
cow = zebra * 2
zebra = abs(cow - lion)
lion = zebra + lion ** 2
zebra = (zebra + lion) / 2 * lion cow
```

After running the above block of code, what is the value of
`cow`

?

**Answer**: `33.0`

The average score on this problem was 60%.