Check if a given value is out of certain range

Ian Kelly ian.g.kelly at gmail.com
Wed Sep 30 22:46:48 CEST 2015


On Wed, Sep 30, 2015 at 2:19 PM, alister
<alister.nospam.ware at ntlworld.com> wrote:
> On Wed, 30 Sep 2015 21:06:02 +0300, Marko Rauhamaa wrote:
>
>> Grant Edwards <invalid at invalid.invalid>:
>>
>>>   not (0 <= x <= 10)         (I)
>>> [...]
>>>    (x < 0) or (x > 10)       (II)
>>> [...]
>>> IMO, (I) is _more_ readable than (II)
>>
>> IMO, they're equally readable (except that you should drop the redundant
>> parentheses from (II)).
>>
>>
>> Marko
>
> both are correct
> the problem with 1 is the human brain is not particularity good with
> negatives*.
> to do not (some function) you first of all have to work out some function
> & then invert it, a computer does this without difficulty the human brain
> gets confused which is why I personally consider ii is  more readable
> (YMMV especially if you are working with Boolean maths regularly) this
> example is relatively simple as things get more complex they become more
> error prone error.

To me, the negative of one condition (is x in this range) is more
easily processable than the disjunction of two conditions that
together compose the real, more easily understood condition (is x
outside this range). I find it preferable to avoid nested conditions,
not negated conditions, and (II) has more nesting than (I).

Thought mirrors language. In English, we typically would say "x is not
between 0 and 10", not "x is either less than 0 or greater than 10".

> *as an example you brain cannot correctly process the following.
>
> Not (think of your left toe)
>
> you are now thinking about it aren't you?

No, it made me think about thinking. I barely even registered the
phrase "left toe", much less thought about that.

In any case, that's more an issue of being unable to control what
you're thinking about. If I instruct you, "don't raise your right
hand", do you then automatically raise your right hand?


More information about the Python-list mailing list