On Sun, Jun 7, 2009 at 10:08 AM, Gonzalo Garcia-Perate<[email protected]> wrote: > 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
This is a bit strange and I doubt it does what you want: In [36]: def within_range(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 In [37]: within_range(10, 11, 5) Out[37]: True In [38]: within_range(20, 11, 5) Out[38]: True Your conditional is equivalent to (n in range(n2-threshold, n2+threshold+1) and n < n2+threshold) or n > n2 + threshold which will be true for any n > n2 + threshold. Can you describe in words what you are trying to test? If you want to know if n is in the range n2-threshold to n2+threshold, just test it directly: if n2-threshold <= n <= n2+threshold: If you also want to ensure that n is an integer then use if n==int(n) and (n2-threshold <= n <= n2+threshold): or if isinstance(n, int) and (n2-threshold <= n <= n2+threshold): Kent _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
