A certainl part of an if() structure never gets executed.

Nick the Gr33k support at superhost.gr
Fri Jun 14 04:44:21 EDT 2013


On 14/6/2013 11:03 πμ, Nick the Gr33k wrote:
> On 14/6/2013 4:14 πμ, Steven D'Aprano wrote:
>> On Thu, 13 Jun 2013 17:26:18 +0300, Νικόλαος Κούρας wrote:
>>
>>> i just want 4 cases to examine so correct execute to be run:
>>>
>>> i'm reading and reading and reading this all over:
>>>
>>> if '-' not in ( name and month and year ):
>>>
>>> and i cant comprehend it.
>>
>> Don't just read it. Open the interactive interpreter and test it.
>>
>> name = "abcd"
>> month = "efgh"
>> year = "ijkl"
>>
>> print(name and month and year)
>>
>> If you run that, you will see what the result of
>> (name and month and year) is. Now, ask yourself:
>>
>> "k" in (name and month and year)
>>
>> True or false? Check your answer:
>>
>> print("k" in (name and month and year))
>
>
>  >>> name="abcd"
>  >>> month="efgh"
>  >>> year="ijkl"
>
>  >>> print(name or month or year)
> abcd
>
> Can understand that, it takes the first string out of the 3 strings that
> has a truthy value.
>
>  >>> print("k" in (name and month and year))
> True
>
> No clue. since the expression in parenthesis returns 'abcd' how can 'k'
> contained within 'abcd' ?
>
>  >>> print(name and month and year)
> ijkl
>
> Seems here is returning the last string out of 3 strings, but have no
> clue why Python doing this.
>
>  >>> print("k" in (name and month and year))
> True
>  >>>
>
> yes, since expression returns 'ijkl', then the in operator can detect
> the 'k' character within the returned string.
>

Someone want to explain this?

-- 
What is now proved was at first only imagined!



More information about the Python-list mailing list