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


Groups > comp.lang.python > #97876

Re: If one IF is satisfied, skip the rest in the nest...

From Denis McMahon <denismfmcmahon@gmail.com>
Newsgroups comp.lang.python
Subject Re: If one IF is satisfied, skip the rest in the nest...
Date 2015-10-22 02:08 +0000
Organization A noiseless patient Spider
Message-ID <n09gef$t7h$3@dont-email.me> (permalink)
References <50a6789a-3965-430b-9a91-b08adcedf7bf@googlegroups.com> <n08q5p$t7h$1@dont-email.me> <n08r9p$h8g$1@reader1.panix.com>

Show all headers | View raw


On Wed, 21 Oct 2015 20:07:21 +0000, Grant Edwards wrote:

> On 2015-10-21, Denis McMahon <denismfmcmahon@gmail.com> wrote:
>> On Wed, 21 Oct 2015 10:31:04 -0700, bigred04bd3 wrote:
>>
>>> So here what I have, I have a 3 IF's within the same level.  If one IF
>>> is satisfied, I would like to "skip" the other IFs and continue with
>>> my code.
>>
>> c1 = wb1_sheet1.cell(row=cell + 1, column=2).value == 0 and
>>      wb1_sheet1.cell(row=cell + 1, column=3).value == 0
>>
>> c2 = wb1_sheet1.cell(row=cell + 2, column=2).value == 0 and
>>      wb1_sheet1.cell(row=cell + 2, column=3).value == 0
>>
>> c3 = wb1_sheet1.cell(row=cell + 3, column=2).value == 0 and
>>      wb1_sheet1.cell(row=cell + 3, column=3).value == 0
>>
>> if c1:
>>     if c2:
>>         if c3:
>>             # c1 && c2 && c3 # 4 second open
>>         else:
>>             # c1 && c2 # 3 second open
>>     else:
>>         # only c1 # 2 second open
> 
> if c1 && c2 && c3:
>     pass   # 4 seconds
> elif c1 && c2:
>     pass   # 3 seconds
> elif c1:
>     pass   # 2 seconds
> 
> Or if you want to be particulary obtuse:
> 
> seconds = {0b111:4, 0b110:3, 0b100:2}.get(c1<<2 | c2<<1 | c3<<0, None)

Not really valid, because #seconds n is simply a marker to indicate which 
branch of the OP's code to execute.

>> Each condition only gets evaluated once.
> 
> OK.

Yes, but in the structure I suggest, you can move the conditions back 
into the if statements and they still only each get evaluated once. Viz 
my alternative to the OP's code:

if wb1_sheet1.cell(row=cell + 1, column=2).value == 0 and wb1_sheet1.cell
(row=cell + 1, column=3).value == 0:

    if wb1_sheet1.cell(row=cell + 2, column=2).value == 0 and 
wb1_sheet1.cell(row=cell + 2, column=3).value == 0:

        if wb1_sheet1.cell(row=cell + 3, column=2).value == 0 and 
wb1_sheet1.cell(row=cell + 3, column=3).value == 0:

            open += 3 
            open_seconds += 4 
            start = wb1_sheet1.cell(row=cell + 4, column=2).coordinate

        else:

            open += 3 
            open_seconds += 3
            start = wb1_sheet1.cell(row=cell + 3, column=2).coordinate 

    else:

        open += 3 
        open_seconds += 2
        start = wb1_sheet1.cell(row=cell + 2, column=2).coordinate 

Not trying to be obtuse here, trying to suggest a practical solution.

Of course, the benefit of reducing the number of times each lookup into 
the worksheet is performed by reducing the number of times each 
comparison evaluated is going to depend on the computational and memory 
manipulation cost of doing so (I assume the workbook is loaded in memory, 
so no IO costs), and how frequently this set of comparisons is being 
performed.

-- 
Denis McMahon, denismfmcmahon@gmail.com

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


Thread

If one IF is satisfied, skip the rest in the nest... bigred04bd3@gmail.com - 2015-10-21 10:31 -0700
  Re: If one IF is satisfied, skip the rest in the nest... Ian Kelly <ian.g.kelly@gmail.com> - 2015-10-21 11:39 -0600
  Re: If one IF is satisfied, skip the rest in the nest... John Gordon <gordon@panix.com> - 2015-10-21 17:46 +0000
  Re: If one IF is satisfied, skip the rest in the nest... bigred04bd3@gmail.com - 2015-10-21 10:55 -0700
  Re: If one IF is satisfied, skip the rest in the nest... Denis McMahon <denismfmcmahon@gmail.com> - 2015-10-21 19:48 +0000
    Re: If one IF is satisfied, skip the rest in the nest... Grant Edwards <invalid@invalid.invalid> - 2015-10-21 20:07 +0000
      Re: If one IF is satisfied, skip the rest in the nest... Denis McMahon <denismfmcmahon@gmail.com> - 2015-10-22 02:08 +0000

csiph-web