Boston Python Workshop 4/Friday/Tutorial: Difference between revisions

Content added Content deleted
imported>Jesstess
imported>Jesstess
Line 539: Line 539:


<pre>
<pre>
if True:
if 6 > 5:
print "I'm True!"
print "Six is greater than five!"
</pre>
</pre>


That was our first multi-line piece of code, and the way to enter it at a Python prompt is a little different. First, type the <code>if True:</code> part, and hit enter. The next line will have <code>...</code> as a prompt, instead of the usual <code>&gt;&gt;&gt;</code>. This is Python telling us that we are in the middle of a <b>code block</b>, and so long as we indent our code it should be a part of this code block.
That was our first multi-line piece of code, and the way to enter it at a Python prompt is a little different. First, type the <code>if 6 > 5:</code> part, and hit enter. The next line will have <code>...</code> as a prompt, instead of the usual <code>&gt;&gt;&gt;</code>. This is Python telling us that we are in the middle of a <b>code block</b>, and so long as we indent our code it should be a part of this code block.


Type 4 spaces, and then type <code>print "I'm True!"</code>. Hit enter to end the line, and hit enter again to tell Python you are done with this code block. All together, it will look like this:
Type 4 spaces, and then type <code>print "Six is greater than five!"</code>. Hit enter to end the line, and hit enter again to tell Python you are done with this code block. All together, it will look like this:


<pre>
<pre>
>>> if True:
>>> if 6 > 5:
... print "I'm True!"
... print "Six is greater than five!"
...
...
Six is greater than five!
"I'm True!"
</pre>
</pre>


So what is going on here? When Python encounters the <code>if</code> keyword, it <i>evaluates</i> the <i>expression</i> following the keyword and before the colon. If that expression is <b>True</b>, Python executes the code in the indented code block under the <code>if</code> line. If that expression is <b>False</b>, Python skips over the code block.
So what is going on here? When Python encounters the <code>if</code> keyword, it <i>evaluates</i> the <i>expression</i> following the keyword and before the colon. If that expression is <b>True</b>, Python executes the code in the indented code block under the <code>if</code> line. If that expression is <b>False</b>, Python skips over the code block.


In this case, because <code>True</code> is truthy, Python executes the code block under the if statement, and we see "I'm True!" printed to the screen. Guess what will happen with these other expressions, then type them out and see if your guess was correct:
In this case, because 6 really is greater than 5, Python executes the code block under the if statement, and we see "Six is greater than five!" printed to the screen. Guess what will happen with these other expressions, then type them out and see if your guess was correct:


<pre>
<pre>
if False:
if 0 > 2:
print "I'm True!"
print "Zero is greater than two!"
</pre>
</pre>


<pre>
<pre>
if "banana" in "bananarama":
if 1:
print "1 is truthy"
print "I miss the 80s."
</pre>
</pre>

<pre>
if 0:
print "0 is truthy"
</pre>

<pre>
if "test":
print "non-empty strings are truthy"
</pre>

<pre>
if "":
print "empty strings are truthy"
</pre>

In summary, things that represent emptyness or zeroness, including the boolean <code>False</code>, empty string, and 0, will evaluate to <code>False</code> in a conditional expression. Everything else, including the boolean <code>True</code>, non-empty strings, and numbers other than 0, is <code>True</code>.


====more choices: <code>if</code> and <code>else</code>====
====more choices: <code>if</code> and <code>else</code>====