if, continuation and indentation
Colin J. Williams
cjwilliams43 at gmail.com
Mon May 31 19:34:55 EDT 2010
On 31-May-10 17:15 PM, Lie Ryan wrote:
> On 05/31/10 05:10, Colin J. Williams wrote:
>> On 30-May-10 01:50 AM, Nathan Rice wrote:
>>> On 27-May-10 08:48 AM, Xavier Ho wrote:
>>> > On 27 May 2010 22:22, HH<henri... at gmail.com
>>> <mailto:henri... at gmail.com>> <mailto:henri... at gmail.com
>>> <mailto:henri... at gmail.com>>> wrote:
>>>
>>> >
>>> > if (width == 0 and
>>> > height == 0 and
>>> > color == 'red' and
>>> > emphasis == 'strong' or
>>> > highlight> 100):
>>> > raise ValueError("sorry, you lose")
>>> >
>>> >
>>> > I've gotta say - I've bumped into this problem before,
>>> and I'm sure many
>>> > other have - this is a valid question. It just hasn't
>>> bothered me enough
>>> > to ask...
>>> >
>>> > Correct me if I'm wrong, but I think the following is
>>> equivalent, and
>>> > looks better. Although this won't fix all ugly cases in
>>> that problem..
>>> >
>>> > if (width, height, color, emphasis) == (0, 0, 'red',
>>> 'strong') or
>>> > highlight> 100:
>>> > raise ValueError("sorry, you lose")
>>> >
>>> > Cheers,
>>> > Xav
>>>
>>> but nobody commented.
>>>
>>> Colin W.
>>>
>>>
>>> Colin:
>>> Sure, you can do it that way. IMO, though, the OP was wrong,
>>> and so
>>> is the PEP. Source code is meant to communicate. So it must
>>> transmit
>>> the correct information to the computer; it also must inform your
>>> coworkers. That means that you have a responsibility to care
>>> what
>>> they think, though you privately have your opinions. Another
>>> reason
>>> the PEP is faulty in this circumstance is that a misplaced
>>> backslash,
>>> or a missing one, is easily found and fixed. A misplaced
>>> parentheses,
>>> or just one of a pair, will transform your source code into
>>> something
>>> which may compile and then give faulty results: a disaster.
>>> So keep it simple, and make it legible.
>>> Yours,
>>> John
>>>
>>>
>>> IMHO complete garbage, if your editor doesn't show misplaced or
>>> missing parenthesis by highlighting you're using the wrong editor :)
>>>
>>>
>>
>> Perhaps the arrangement below shows the matching a little better than
>> the Xav suggestion. The main point is that, to me, the tuple shows the
>> item by item matching better than a series of and clauses:
>>
>> # tif.py
>>
>> (width, height, color, emphasis)= 0, 0, 'red', 'strong'
>> highlight= 99
>> if (width, height, color, emphasis) == \
>> ( 0, 0, 'red', 'strong') or highlight> 100:
>> raise ValueError("sorry, you lose")
>
> How about:
>
> all(a == b for a,b in ((width, 0), (height, 0), (color, 'red'),
> (emphasis, 'strong'))))
You need to add "or highlight > 100"
More information about the Python-list
mailing list