Q2:A Plus Abs B
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, sub
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 check that you didn't change the return statement!
>>> import inspect, re
>>> re.findall(r'^\s*(return .*)', inspect.getsource(a_plus_abs_b), re.M)
['return h(a, b)']
"""
if b >= 0:
h = _____
else:
h = _____
return h(a, b)
思路:首先operator函数中调用了add, sub函数来代替abs函数,add为加法函数、sub为加法函数。当 b<0时,我们考虑用a-b来对a_plus_abs_b(a, b)中的数值进行运算。所以在if语句中,将h分配给add和sub两个函数中去。
解决方案
from operator import add, sub
def a_plus_abs_b(a, b):
if b >= 0:
h = add
else:
h = sub
return h(a, b)