On Sat, Mar 8, 2014 at 8:36 AM, Dave Angel <[email protected]> wrote:
> Mark Lawrence <[email protected]> Wrote in message:
>> On 08/03/2014 01:23, Scott W Dunning wrote:
>>
>>> def print_hints(secret, guess):
>>> if guess < 1 or guess > 100:
>>
>> Only now do I feel that it's time to point out that the above line would
>> probably be written by an experienced Python programmer as:-
>>
>> if 1 > guess > 100:
>>
>
> With an appropriate 'not' or its equivalent, of course.
i.e.
guess < 1 or guess > 100
becomes
not not (guess < 1 or guess > 100)
distribute over the disjunction
not (not (guess < 1) and not (guess > 100))
logically negate the comparisons
not (1 <= guess and guess <= 100)
finally, write the conjoined comparisons as a chained comparison:
not (1 <= guess <= 100)
i.e., guess isn't in the closed interval [1, 100].
Anyway, you needn't go out of your way to rewrite the expression using
a chained comparison. The disjunctive expression is actually
implemented more efficiently by CPython's compiler, which you can
verify using the dis module to disassemble the bytecode.
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor