Python Forum

Full Version: Potential confusion combining != with or
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
(Oct-31-2019, 07:21 AM)perfringo Wrote: [ -> ]buran explanation backed-up with Python docs (already referenced earlier):

Quote:Operations and built-in functions that have a Boolean result always return 0 or False for false and 1 or True for true, unless otherwise stated. (Important exception: the Boolean operations or and and always return one of their operands.)

This behaviour enables writing 'clever' code like:

>>> lst = [1, 2, 3]
>>> for i in lst:
...     print(i % 2 and 'odd' or 'even')
... 
odd
even
odd

I didn't see these three posts until now. This is the sort of explanation I really wanted except I do not understand. Can you explain the odd, even, odd output in this example?
maybe this will help as it brakes line 3 into sub-steps
lst = [1, 2, 3]
for i in lst:
    print(f'i={i}')
    print(f"i % 2 --> {i % 2}")
    print(f"{i % 2} and 'odd' --> {i % 2 and 'odd'}")
    print(f"{i % 2 and 'odd'} or 'even' --> {i % 2 and 'odd' or 'even'}")
    print('-'*10)
Output:
i=1 i % 2 --> 1 1 and 'odd' --> odd odd or 'even' --> odd ---------- i=2 i % 2 --> 0 0 and 'odd' --> 0 0 or 'even' --> even ---------- i=3 i % 2 --> 1 1 and 'odd' --> odd odd or 'even' --> odd ----------
Pages: 1 2