On Wed, Sep 30, 2015 at 2:19 PM, alister <alister.nospam.w...@ntlworld.com> wrote: > On Wed, 30 Sep 2015 21:06:02 +0300, Marko Rauhamaa wrote: > >> Grant Edwards <invalid@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? -- https://mail.python.org/mailman/listinfo/python-list