It all started with a tweet
Browsing through Twitter I came across a particular tweet today. It was a simple expression in Python, accompanied by a challenge to guess its evaluated result.
False == False in [False]
Although I didn’t get it at first, after a little bit of strenous staring
I decided that it was
True I can no longer recall.
The answer is
True though. If you’re confused
(I’m looking at you, future me) pay attention to the order of precedence.
Led to discord
It was interesting, so I shared the tweet with a discord server of coding comrades. There, the Python specialist of the troupe posed a challenge of their own.
if False == False is [False,True]: print("4") else: print("5")
While I knew the result was
4, I remarked that it would be syntactically
incorrect since the body blocks were not indented (nor line broken).
And I had remarked wrong!
Having dabbled very little with Python, I only knew that indents were strict, not that a single body statement could be written in the same line!
With some experimentation
if 9: print("it was true ...thy!") if '.': print("this was also truthy!") if [1,2,3]: print("trueee") if 0: print("i am never getting printed") if '': print("me neither") if : print("well will i be printed? no")
it was true ...thy! this was also truthy! trueee
Looking for stricter booleans
But now I cannot remember anywhere else that has strict booleans. C?
Ah, I have already found an answer (the next day). Empty strings
'' are also evaluated
as true in C. Almost everything except for
(null) has evaluated
to true. Although, when I say true, I just mean
if’s body was executed
since C doesn’t have actual booleans.
In experimenting to find this, I have now understood why
scanf instead of
argv. Data types.