while loop - multiple condition

Rob Gaddi rgaddi at technologyhighland.invalid
Mon Oct 13 12:43:08 EDT 2014


On Mon, 13 Oct 2014 09:26:57 -0700 (PDT)
Rustom Mody <rustompmody at gmail.com> wrote:

> On Monday, October 13, 2014 9:43:03 PM UTC+5:30, Rob Gaddi wrote:
> > On Mon, 13 Oct 2014 09:56:02 +1100
> > Steven D'Aprano  wrote:
> > > When you have multiple clauses in the condition, it's easier to reason about
> > > them if you write the clauses as positive statements rather than negative
> > > statements, that is, "something is true" rather than "something is not
> > > true", and then use `not` to reverse it if you want to loop *until* the
> > > overall condition is true.
> 
> > I was just explaining this concept to a young pup the other day.  De
> > Morgan's lets you say that (not (p and q)) == ((not p) or (not q)), but
> > the positive logic flavor is substantially less error-prone.  People
> > are fundamentally not as good at thinking about inverted logic.
> 
> Curious: Which of
> 
> - (not (p and q))
> - ((not p) or (not q))
> 
> is more positive (less negative)??

The first is asking you to compare positive conditions (p and q) and
negate the entire thing (NAND).  The second asks you to think about
the combination of two different "not true" pieces of logic
(OR of two inverted inputs).  The first is pretty straightforward, and
I usually see people get it right.  The second gets screwed up as often
as not.

And of course, any combination of ands and ors should be broken into
multiple statements with a descriptive variable name in the middle or
all hope is lost.

-- 
Rob Gaddi, Highland Technology -- www.highlandtechnology.com
Email address domain is currently out of order.  See above to fix.



More information about the Python-list mailing list