I want to limit a number to be within a certain range. Currently, I am doing the following:
minN = 1
maxN = 10
n = something() #some return value from a function
n = max(minN, n)
n = min(maxN, n)
This keeps it within minN
and maxN
, but it doesn't look very nice. How could I do it better?
PS: FYI, I am using Python 2.6.
def clamp(n, minn, maxn):
return max(min(maxn, n), minn)
or functionally equivalent:
clamp = lambda n, minn, maxn: max(min(maxn, n), minn)
now, you use:
n = clamp(n, 7, 42)
or make it perfectly clear:
n = minn if n < minn else maxn if n > maxn else n
even clearer:
def clamp(n, minn, maxn):
if n < minn:
return minn
elif n > maxn:
return maxn
else:
return n