Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
and or or surprise
#1
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
Reply
#2
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
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
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
Reply
#4
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.
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020