Loops, Conditionals
Introduction
(Our final lesson before we get
into interacting with human input.
Can't wait, can you?)
Just imagine you needed a
program to do something 20 times.
What would you do? You could copy
and paste the code 20 times, and
have a virtually unreadable
program, not to mention slow and
pointless. Or, you could tell the
computer to repeat a bit of code
between point A and point B, until
the time comes that you need it to
stop. Such a thing is called a
loop.
The 'while' loop
The following are examples of a
type of loop, called the 'while'
loop:
|
Code Example 1 - The while
loop |
a = 0
while a < 10:
a = a + 1
print a
|
How does this program work?
Lets go through it in English:
|
Code Example 2 -
plain-language while loop |
'a' now equals 0
As long as 'a' is less than
10, do the following:
Make 'a' one larger than what
it already is.
print on-screen what 'a' is
now worth.
|
What does this do? Lets go
through what the computer would be
'thinking' when it is in the
'while' loop:
|
Code Example 3 - while loop
process |
#JUST GLANCE OVER THIS QUICKLY
#(It looks fancy, but is
really simple)
Is 'a' less than 10? YES (its
0)
Make 'a' one larger (now 1)
print on-screen what 'a' is
(1)
Is 'a' less than 10? YES (its
1)
Make 'a' one larger (now 2)
print on-screen what 'a' is
(2)
Is 'a' less than 10? YES (its
2)
Make 'a' one larger (now 3)
print on-screen what 'a' is
(3)
Is 'a' less than 10? YES (its
3)
Make 'a' one larger (now 4)
print on-screen what 'a' is
(4)
Is 'a' less than 10? YES (its
4)
Make 'a' one larger (now 5)
print on-screen what 'a' is
(5)
Is 'a' less than 10? YES (its
5)
Make 'a' one larger (now 6)
print on-screen what 'a' is
(6)
Is 'a' less than 10? YES (its
6)
Make 'a' one larger (now 7)
print on-screen what 'a' is
(7)
Is 'a' less than 10? YES (are
you still here?)
Make 'a' one larger (now 8)
print on-screen what 'a' is
(8)
Is 'a' less than 10? YES (its
8)
Make 'a' one larger (now 9)
print on-screen what 'a' is
(9)
Is 'a' less than 10? YES (its
9)
Make 'a' one larger (now 10)
print on-screen what 'a' is
(10)
Is 'a' less than 10? NO (its
10, therefore isn't less than
10)
Don't do the loop
There's no code left to do, so
the program ends
|
So in short, try to think of it
that way when you write 'while'
loops. This is how you write them,
by the way (and a couple of
examples:
|
Code Example 4 - while loop
form, and example |
while {condition that the loop
continues}:
{what to do in the loop}
{have it indented, usually
four spaces}
{the code here is not looped}
{because it isn't indented}
#EXAMPLE
#Type this in, see what it
does
x = 10
while x != 0:
print x
x = x - 1
print "wow, we've counted x
down, and now it equals", x
print "And now the loop has
ended."
|
Remember, to make a program,
you open IDLE, click File > New
Window, type your program in the
new window, then press F5 to run.
Boolean Expressions (Boolean...
what?!?)
What do you type in the area
marked {conditions that the loop
continues}? The answer is a
boolean expression.
What? A forgotten concept for
the non-math people here. Never
mind, boolean expression just
means a question that can be
answered with a TRUE or FALSE
response. For example, if you
wanted to say your age is the same
as the person next to you, you
would type:
My age == the age of the person
next to me
And the statement would be
TRUE. If you were younger than the
person opposite, you'd say:
My age < the age of the person
opposite me
And the statement would be
TRUE. If, however, you were to say
the following, and the person
opposite of you was younger than
you:
My age < the age of the person
opposite me
The statement would be FALSE -
the truth is that it is the other
way around. This is how a loop
thinks - if the expression is
true, keep looping. If it is
false, don't loop. With this in
mind, lets have a look at the
operators (symbols that represent
an action) that are involved in
boolean expressions:
|
Table 1 - Boolean operators |
| Expression |
Function |
| < |
less than |
| <= |
less that or equal to |
| > |
greater than |
| >= |
greater than or equal to |
| != |
not equal to |
| <> |
not equal to (alternate) |
| == |
equal to |
Dont get '=' and '==' mixed up
- the '=' operator makes what is
on the left equal to what is on
the right. the '==' operator says
whether the thing on the left is
the same as what is on the right,
and returns true or false.
Conditional Statements
OK! We've (hopefully) covered
'while' loops. Now let's look at
something a little different -
conditionals.
Conditionals are where a
section of code is only run if
certain conditions are met. This
is similar to the 'while' loop you
just wrote, which only runs when x
doesn't equal 0. However,
Conditionals are only run once.
The most common conditional in any
program language, is the 'if'
statement. Here is how it works:
|
Code Example 5 - if statement
and example |
if {conditions to be met}:
{do this}
{and this}
{and this}
{but this happens regardless}
{because it isn't indented}
#EXAMPLE 1
y = 1
if y == 1:
print "y still equals 1, I was
just checking"
#EXAMPLE 2
print "We will show the even
numbers up to 20"
n = 1
while n <= 20:
if n % 2 == 0:
print n
n = n + 1
print "there, done."
|
Example 2 there looks tricky.
But all we have done is run an
'if' statement every time the
'while' loop runs. Remember that
the % just means the remainder
from a division - just checking
that there is nothing left over if
the number is divided by two -
showing it is even. If it is even,
it prints what 'n' is.
'else' and 'elif' - When it Ain't
True
There are many ways you can use
the 'if' statement, do deal with
situations where your boolean
expression ends up FALSE. They are
'else' and 'elif'.
'else' simply tells the
computer what to do if the
conditions of 'if' arent met. For
example, read the following:
|
Code Example 6 - the else
statement |
a = 1
if a > 5:
print "This shouldn't happen."
else:
print "This should happen."
|
'a' is not greater than five,
therefore what is under 'else' is
done.
'elif' is just a shortened way
of saying 'else if'. When the 'if'
statement fails to be true, 'elif'
will do what is under it IF the
conditions are met. For example:
|
Code Example 7 - The elif
statement |
z = 4
if z > 70:
print "Something is very
wrong"
elif z < 7:
print "This is normal"
|
The 'if' statement, along with
'else' and 'elif' follow this
form:
|
Code Example 8 - the complete
if syntax |
if {conditions}:
{run this code}
elif {conditions}:
{run this code}
elif {conditions}:
{run this code}
else:
{run this code}
#You can have as many or as
little elif statements as you
need
#anywhere from zero to the
sky.
#You can have at most one else
statement
#and only after all other ifs
and elifs.
|
One of the most important points
to remember is that you MUST have
a colon : at the end of every line
with an 'if', 'elif', 'else' or
'while' in it. I forgot that, and
as a result a stack of people got
stumped at this lesson (sorry ;)
).
Indentation
One other point is that the
code to be executed if the
conditions are met, MUST BE
INDENTED. That means that if you
want to loop the next five lines
with a 'while' loop, you must put
a set number of spaces at the
beginning of each of the next five
lines. This is good programming
practice in any language, but
python requires that you do it.
Here is an example of both of the
above points:
|
Code Example 9 - Indentation |
a = 10
while a > 0:
print a
if a > 5:
print "Big number!"
elif a % 2 != 0:
print "This is an odd number"
print "It isn't greater than
five, either"
else:
print "this number isn't
greater than 5"
print "nor is it odd"
print "feeling special?"
a = a - 1
print "we just made 'a' one
less than what it was!"
print "and unless a is not
greater than 0, we'll do the
loop again."
print "well, it seems as if
'a' is now no bigger than 0!"
print "the loop is now over,
and without furthur adue, so
is this program!"
|
Notice the three levels of indents
there:
- Each line in the first level
starts with no spaces. It is the
main program, and will always
execute.
- Each line in the second
level starts with four spaces.
When there is an 'if' or loop on
the first level, everything on
the second level after that will
be looped/'ifed', until a new
line starts back on the first
level again.
- Each line in the third level
starts with eight spaces. When
there is an 'if' or loop on the
second level, everything on the
third level after that will be
looped/'ifed', until a new line
starts back on the second level
again.
- This goes on infinitely,
until the person writing the
program has an internal brain
explosion, and cannot understand
anything he/she has written.
There is another loop, called
the 'for' loop, but we will
cover that in a later lesson,
after we have learnt about lists.
|