Q1: A Plus Abs B
Fill in the blanks in the following function for adding a to the absolute value of b, without calling abs.
1 | from operator import add, sub |
Q2: Two of Three
Write a function that takes three positive numbers and returns the sum of the squares of the two largest numbers. Use only a single line for the body of the function.
1 | def two_of_three(a, b, c): |
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: If Function vs Statement
Let’s try to write a function that does the same thing as an if statement.
1 | def if_function(condition, true_result, false_result): |
Despite the doctests above, this function actually does not do the same thing as an if statement in all cases. To prove this fact, write functions c, t, and f such that with_if_statement prints the number 2, but with_if_function prints both 1 and 2.
1 | def with_if_statement(): |
Remeber that when we call a function, we must evaluate every operand as parameter in the function, so anyway, c function, t function and f function must be called regardless of the return value(True or False) by c function, while in if statement, the true clause can not be called if evaluated value is False. So the two is not exactly the same.
Q5: 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): |
Q6: Quine
Write a one-line program that prints itself, using only the following features of the Python language:
- Number literals
- Assignment statements
- String literals that can be expressed using single or double quotes
- The arithmetic operators +, -, *, and /
- The built-in print function
- The built-in eval function, which evaluates a string as a Python expression
- The built-in repr function, which returns an expression that evaluates to its argument
- You can concatenate two strings by adding them together with + and repeat a string by multipying it by an integer.
- Semicolons can be used to separate multiple statements on the same line. E.g.,
1 | >>> c='c';print('a');print('b' + c * 2) |
Hint: Explore the relationship between single quotes, double quotes, and the repr function applied to strings.
A program that prints itself is called a Quine. Place your solution in the multi-line string named quine.