Python Forum
and or or surprise - 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: and or or surprise (/thread-34045.html)



and or or surprise - hakelm - Jun-21-2021

Trying to teach my grandchildren (and myself) python I slide into surprises all the time. The last one:
>>> x=3
>>> y=5
>>> x and y
5
>>> y and x
3
>>> x or y
3
>>> y or x
5
>>> x='7'
>>> x and y
5
>>> y and x
'7'
>>> type(x and y)
<class 'int'>
>>> type(y and x)
<class 'str'>
You will get similar results with or.
So what does and or or really mean, what kind of results can it deliver, when can I expect an exception?
Thanks in advance for any tip
H


RE: and or or surprise - buran - Jun-21-2021

What is the surprise for you?

From the docs

Quote:The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.

The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.

Also, this part of the docs

Also check Truth Value testing


RE: and or or surprise - hakelm - Jun-21-2021

Thanks for pointing me to the documentation that I should have read.
The surprise for my rigid mind is that these normally commutative boolean operators can depending on order return any type or value.
H


RE: and or or surprise - Gribouillis - Jun-21-2021

In Python they are binary operators but nor boolean, nor commutative. The point is they are much more useful this way. Unfortunately few rules are straightforward when one learns a new language. There is an incompressible amount of design choices to get accustomed to.