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


User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020
This forum uses Lukasz Tkacz MyBB addons.
Forum use Krzysztof "Supryk" Supryczynski addons.