
Homework 1: Functions, Control hw01.zip
Due by 11:59pm on Thursday, September 1
Required Questions
Q1: A Plus Abs B
Python’s operator
module defines binary functions for Python’s intrinsic arithmetic operators. For example, calling operator.add(2,3)
is equivalent to calling the expression 2 + 3
; both will return 5
.
Note that when the
operator
module is imported into the namespace, like at the top ofhw01.py
, you can just calladd(2,3)
instead ofoperator.add(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.
1 | def a_plus_abs_b(a, b): |
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.
1 | def two_of_three(i, j, k): |
Q3: Largest Factor
Write a function that takes an integer n
that is greater than 1 and returns the largest integer that is smaller than n
and evenly divides n
.
1 | def largest_factor(n): |
Q4: Hailstone
Douglas Hofstadter’s Pulitzer-prize-winning book, Gödel, Escher, Bach, poses the following mathematical puzzle.
- Pick a positive integer
n
as the start. - If
n
is even, divide it by 2. - If
n
is odd, multiply it by 3 and add 1. - Continue this process until
n
is 1.
The number n
will travel up and down but eventually end at 1 (at least for all numbers that have ever been tried – nobody has ever proved that the sequence will terminate). Analogously, a hailstone travels up and down in the atmosphere before eventually landing on earth.
This sequence of values of n
is often called a Hailstone sequence. Write a function that takes a single argument with formal parameter name n
, prints out the hailstone sequence starting at n
, and returns the number of steps in the sequence:
1 | def hailstone(n): |
