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.
from operator import add, subdefa_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 """if b <0: f = _____else: f = _____returnf(a, b)
Q1 - Solution
defa_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 """if b <0: f = subelse: f = addreturnf(a, b)
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.
deftwo_of_three(a,b,c):"""Return x*x + y*y, where x and y are the two largest members of the positive numbers a, b, and c.>>> two_of_three(1, 2, 3) 13>>> two_of_three(5, 3, 1) 34>>> two_of_three(10, 2, 8) 164>>> two_of_three(5, 5, 5) 50 """return _____
Q2 - Solution
deftwo_of_three(a,b,c):"""Return x*x + y*y, where x and y are the two largest members of the positive numbers a, b, and c.>>> two_of_three(1, 2, 3) 13>>> two_of_three(5, 3, 1) 34>>> two_of_three(10, 2, 8) 164>>> two_of_three(5, 5, 5) 50 """return a*a + b*b + c*c -min(a, b, c)*min(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.
deflargest_factor(n):"""Return the largest factor of n that is smaller than n.>>> largest_factor(15) # factors are 1, 3, 5 5>>> largest_factor(80) # factors are 1, 2, 4, 5, 8, 10, 16, 20, 40 40>>> largest_factor(13) # factor is 1 since 13 is prime 1 """"*** YOUR CODE HERE ***"
Q3 - Solution
#find the smallest, divide n with the smallest => largestif n %2==0:return n //2for i inrange(3, n//2, 2):if n % i ==0:return n // ielif i == n//2-1:#last iteration - it's a primereturn1
Q4: If Function vs Statement
Let's try to write a function that does the same thing as an if statement.
defif_function(condition,true_result,false_result):"""Return true_result if condition is a true value, and false_result otherwise.>>> if_function(True, 2, 3) 2>>> if_function(False, 2, 3) 3>>> if_function(3==2, 3+2, 3-2) 1>>> if_function(3>2, 3+2, 3-2) 5 """if condition:return true_resultelse:return 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.
defwith_if_statement():""">>> result = with_if_statement() 2>>> print(result) None """ifc():returnt()else:returnf()defwith_if_function():""">>> result = with_if_function() 1 2>>> print(result) None """returnif_function(c(), t(), f())defc():"*** YOUR CODE HERE ***"deft():"*** YOUR CODE HERE ***"deff():"*** YOUR CODE HERE ***"
Q4 - Solution
defc():"*** YOUR CODE HERE ***"returnFalsedeft():"*** YOUR CODE HERE ***"print(1)deff():"*** YOUR CODE HERE ***"print(2)
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.
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:
defhailstone(n):"""Print the hailstone sequence starting at n and return its length.>>> a = hailstone(10) 10 5 16 8 4 2 1>>> a 7 """"*** YOUR CODE HERE ***"
Q5 - Solution
def hailstone(n): """Print the hailstone sequence starting at n and return its length.
>>> a =hailstone(10)105168421>>> a7""""*** YOUR CODE HERE ***"if not isinstance(n, int) or n < 1: return 0steps = 1 while n != 1: print(n) if n % 2 == 0: n //= 2 else: n = n * 3 + 1 steps += 1print(n)return steps