On 14/6/2013 7:31 μμ, Steven D'Aprano wrote:
On Fri, 14 Jun 2013 16:07:56 +0300, Nick the Gr33k wrote:
Thanks for explaining this but i cannot follow its logic at all. My mind
is stuck trying to interpret it as an English sentence:

if ('Parker' and 'May' and '2001')

if ('Parker' or 'May' or '2001')

i just don't get it and i feel silly about it.
Python is not English. You just have to accept that, no matter how much
you wish it worked like English, it does not.

Think of it like this:

"If today is Tuesday AND I finish work early, then I can go to the
movies."

Unless *both* conditions are true, I cannot go to the movies.


"If today is Tuesday AND I finish work early AND I have more than $16
spare cash to pay for a ticket, then I can go to the movies."

All three conditions must be true, or I cannot go to the movies.


If today is Monday, I don't need to check whether I finish work early, or
whether I have spare cash. It is enough to know that today is not
Tuesday, so I'm not going to the movies.


Python works the same way:

today_is_tuesday = True
finish_work_early = True
spare_cash = 11


if today_is_tuesday and finish_work_early and spare_cash > 16:
     print("Going to the movies")
else:
     print("No movies today.")

It will print the latter since the overall boolean evaluation of the expression is False since (spare_cash > 16) = False
That's understandable and works just like an English sentence, but in 
this example it was easy since you assigned the vars values to be either 
True or False.
This is my difficulty.

a = 'abcd'
b = 'efgh'
c = 'ijkl'


>>> (a or b or c)
'abcd'

This for me, should evaluate to True but instead it has been evaluated to the first variable's value, which is a truthy value of course since its not an empty string, but shouldn't it return True instead?
Returning True is the same thing as returning a variable's truthy value?


>>> (a and b and c)
'ijkl'

This in my head should have been evaluated to True also since all 3 strings hold truthy values
Why on earth this boolean expression evaluates to the value of the last 
variable? This is what can't at all seem to follow.

What i'm trying to say that both these exprs are Boolean Expressions therefore should return Boolean values not variable's values, even if they are truthy.



--
What is now proved was at first only imagined!
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to