[Tutor] creating a range above & below a given number

Emile van Sebille emile at fenx.com
Sun Jun 7 17:48:27 CEST 2009


On 6/7/2009 8:44 AM Emile van Sebille said...
> On 6/7/2009 7:08 AM Gonzalo Garcia-Perate said...
>>  the solution laid somewhere in between:
>>
>> def within_range(self, n, n2, threshold=5):
>>         if n in range(n2-threshold, n2+threshold+1) and n <
>> n2+threshold or n > n2 + threshold : return True
>>         return False
>>

Besides the obvious typo you've got there and I cut and paste below.
(+ threshold twice instead of +/- threshold)

Emile

> 
> Be careful here -- you probably will get stung mixing ands and ors 
> without parens.
> 
>  >>> print False and False or True
> True
>  >>> print False and (False or True)
> False
> 
> 
> The range test here can only serve to verify n as an integer, so you can 
> simplify to:
> 
> def within_range(self, n, n2, threshold=5):
>     if n == int(n) and (
>       n < n2+threshold or n > n2 + threshold) :
>         return True
>     return False
> 
> 
> Of course, the test in the function is a boolean, so you can return the 
> result of the boolean directly and eliminate the return True and False 
> statements:
> 
> 
> def within_range(self, n, n2, threshold=5):
>     return n == int(n) and (
>       n < n2+threshold or n > n2 + threshold)
> 
> 
> Emile
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 



More information about the Tutor mailing list