Python Forum
Potential confusion combining != with or - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Potential confusion combining != with or (/thread-22102.html)

Pages: 1 2


RE: Potential confusion combining != with or - Mark17 - Nov-04-2019

(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?


RE: Potential confusion combining != with or - buran - Nov-04-2019

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 ----------