Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #79071

Re: while loop - multiple condition

Date 2014-10-13 16:08 -0600
From Michael Torrie <torriem@gmail.com>
Subject Re: while loop - multiple condition
References (8 earlier) <543b0706$0$13005$c3e8da3$5496439d@news.astraweb.com> <20141013091248.1ffd94a0@rg.highlandtechnology.com> <ee40ce93-38e0-47ca-b41a-b76c9f84c8c4@googlegroups.com> <20141013094308.7d4ea20c@rg.highlandtechnology.com> <1b9fa5ce-45da-4aa8-a849-394a033e1c9d@googlegroups.com>
Newsgroups comp.lang.python
Message-ID <mailman.14837.1413238130.18130.python-list@python.org> (permalink)

Show all headers | View raw


On 10/13/2014 11:12 AM, Rustom Mody wrote:
> On Monday, October 13, 2014 10:13:20 PM UTC+5:30, Rob Gaddi wrote:
>> On Mon, 13 Oct 2014 09:26:57 -0700 (PDT)
>> Rustom Mody  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.
> 
> Yeah I guess 2 nots is one more than one!
> 
> However (to my eyes)
> while i < N  and  a[i] != X:
> 
> looks less negative than
> 
> while not (i==N or a[i] == X):
> 
> [Of course i < N is not identical to i != N ]

Right it should have been not (i >= N or a[i] == X) to be equivalent.

In assembler it's often best to reverse the condition and then use the
opposite jump mnemonic. IE, if the test is to see if a number not zero,
use the jump if zero command instead.  Often it reduces the number of
jumps required and eliminates the need to jump over the body of the "if"
block.

if a != 0 then jump to bigger
jump to end
bigger:
blah
blah
end:

vs

if a == 0 then jump to end
blah
blah
end:


Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Re: while loop - multiple condition Chris Angelico <rosuav@gmail.com> - 2014-10-13 05:03 +1100
  Re: while loop - multiple condition Marko Rauhamaa <marko@pacujo.net> - 2014-10-12 22:16 +0300
    Re: while loop - multiple condition Chris Angelico <rosuav@gmail.com> - 2014-10-13 06:22 +1100
    Re: while loop - multiple condition Tim Chase <python.list@tim.thechases.com> - 2014-10-12 15:42 -0500
      Re: while loop - multiple condition Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-10-13 09:56 +1100
        Re: while loop - multiple condition Rob Gaddi <rgaddi@technologyhighland.invalid> - 2014-10-13 09:12 -0700
          Re: while loop - multiple condition Rustom Mody <rustompmody@gmail.com> - 2014-10-13 09:26 -0700
            Re: while loop - multiple condition Rob Gaddi <rgaddi@technologyhighland.invalid> - 2014-10-13 09:43 -0700
              Re: while loop - multiple condition Rustom Mody <rustompmody@gmail.com> - 2014-10-13 10:12 -0700
                Re: while loop - multiple condition Michael Torrie <torriem@gmail.com> - 2014-10-13 16:08 -0600
                Re: while loop - multiple condition wxjmfauth@gmail.com - 2014-10-13 23:34 -0700
      Re: while loop - multiple condition giacomo boffi <pecore@pascolo.net> - 2014-10-15 01:04 +0200
        Re: while loop - multiple condition Chris Angelico <rosuav@gmail.com> - 2014-10-15 10:16 +1100

csiph-web