Pages

Tuesday, February 2, 2010

The continue statement


The continue statement is used to tell Python to skip the rest of the statements in the current loop
block and to continue to the next iteration of the loop.
Using the continue statement
Example 6.5. Using the continue statement
#!/usr/bin/python
# Filename: continue.py
while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
if len(s) < 3:
continue
print 'Input is of sufficient length'
# Do other kinds of processing here...
Output
$ python continue.py
Enter something : a
Enter something : 12
Enter something : abc
Input is of sufficient length
Enter something : quit
How It Works
In this program, we accept input from the user, but we process them only if they are at least 3 characters
long. So, we use the built-in len function to get the length and if the length is less than 3, we skip the
rest of the statements in the block by using the continue statement. Otherwise, the rest of the statements
in the loop are executed and we can do any kind of processing we want to do here.
Note that the continue statement works with the for loop as well.

The break statement


The break statement is used to break out of a loop statement i.e. stop the execution of a looping statement,
even if the loop condition has not become False or the sequence of items has been completely
iterated over.
An important note is that if you break out of a for or while loop, any corresponding loop else block
is not executed.
Using the break statement

Example 6.4. Using the break statement
#!/usr/bin/python
# Filename: break.py
while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
print 'Length of the string is', len(s)
print 'Done'
Output
$ python break.py
Enter something : Programming is fun
Length of the string is 18
Enter something : When the work is done
Length of the string is 21
Enter something : if you wanna make your work also fun:
Length of the string is 37
Enter something : use Python!
Length of the string is 12
Enter something : quit
Done
How It Works
In this program, we repeatedly take the user's input and print the length of each input each time. We are
providing a special condition to stop the program by checking if the user input is 'quit'. We stop the
program by breaking out of the loop and reach the end of the program.
The length of the input string can be found out using the built-in len function.
Remember that the break statement can be used with the for loop as well.

The for loop


The for..in statement is another looping statement which iterates over a sequence of objects i.e. go
through each item in a sequence. We will see more about sequences in detail in later chapters. What you
need to know right now is that a sequence is just an ordered collection of items.
Using the for statement
Example 6.3. Using the for statement
#!/usr/bin/python
# Filename: for.py
for i in range(1, 5):
print i
else:
print 'The for loop is over'

Output
$ python for.py
1234
The for loop is over
How It Works
In this program, we are printing a sequence of numbers. We generate this sequence of numbers using hte
built-in range function.
What we do here is supply it two numbers and range returns a sequence of numbers starting from the
first number and up to the second number. For example, range(1,5) gives the sequence [1, 2,
3, 4]. By default, range takes a step count of 1. If we supply a third number to range, then that becomes
the step count. For example, range(1,5,2) gives [1,3]. Remember that the range extends
up to the second number i.e. it does not include the second number.
The for loop then iterates over this range - for i in range(1,5) is equivalent to for i in
[1, 2, 3, 4] which is like assigning each number (or object) in the sequence to i, one at a time, and
then executing the block of statements for each value of i. In this case, we just print the value in the
block of statements.
Remember that the else part is optional. When included, it is always executed once after the for loop
is over unless a break statement is encountered.
Remember that the for..in loop works for any sequence. Here, we have a list of numbers generated
by the built-in range function, but in general we can use any kind of sequence of any kind of objects!
We will explore this idea in detail in later chapters.
Note for C/C++/Java/C# Programmers
The Python for loop is radically different from the C/C++ for loop. C# programmers will
note that the for loop in Python is similar to the foreach loop in C#. Java programmers will
note that the same is similar to for (int i : IntArray) in Java 1.5 .
In C/C++, if you want to write for (int i = 0; i < 5; i++), then in Python you
write just for i in range(0,5). As you can see, the for loop is simpler, more expressive
and less error prone in Python.

The while statement


The while statement allows you to repeatedly execute a block of statements as long as a condition is
true. A while statement is an example of what is called a looping statement. A while statement can
have an optional else clause.
Using the while statement
Example 6.2. Using the while statement
#!/usr/bin/python
# Filename: while.py
number = 23
running = True
while running:
guess = int(raw_input('Enter an integer : '))
if guess == number:
print 'Congratulations, you guessed it.'
running = False # this causes the while loop to stop
elif guess < number:
print 'No, it is a little higher than that.'
else:
print 'No, it is a little lower than that.'
else:
print 'The while loop is over.'
# Do anything else you want to do here
print 'Done'
Output
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.

Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done
How It Works
In this program, we are still playing the guessing game, but the advantage is that the user is allowed to
keep guessing until he guesses correctly - there is no need to repeatedly execute the program for each
guess as we have done previously. This aptly demonstrates the use of the while statement.
We move the raw_input and if statements to inside the while loop and set the variable running
to True before the while loop. First, we check if the variable running is True and then proceed to
execute the corresponding while-block. After this block is executed, the condition is again checked
which in this case is the running variable. If it is true, we execute the while-block again, else we continue
to execute the optional else-block and then continue to the next statement.
The else block is executed when the while loop condition becomes False - this may even be the
first time that the condition is checked. If there is an else clause for a while loop, it is always executed
unless you have a while loop which loops forever without ever breaking out!
The True and False are called Boolean types and you can consider them to be equivalent to the value
1 and 0 respecitvely. It's important to use these where the condition or checking is important and not the
actual value such as 1.
The else-block is actually redundant since you can put those statements in the same block (as the while
statement) after the while statement to get the same effect.
Note for C/C++ Programmers
Remember that you can have an else clause for the while loop.

Using the if statement


Example 6.1. Using the if statement
#!/usr/bin/python
# Filename: if.py
number = 23
guess = int(raw_input('Enter an integer : '))
if guess == number:
print 'Congratulations, you guessed it.' # New block starts here
print "(but you do not win any prizes!)" # New block ends here
elif guess < number:
print 'No, it is a little higher than that' # Another block
# You can do whatever you want in a block ...
else:
print 'No, it is a little lower than that'
# you must have guess > number to reach here
print 'Done'
# This last statement is always executed, after the if statement is executed
Output
$ python if.py
Enter an integer : 50
No, it is a little lower than that


Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done
How It Works
In this program, we take guesses from the user and check if it is the number that we have. We set the
variable number to any integer we want, say 23. Then, we take the user's guess using the
raw_input() function. Functions are just reusable pieces of programs. We'll read more about them in
the next chapter.
We supply a string to the built-in raw_input function which prints it to the screen and waits for input
from the user. Once we enter something and press enter, the function returns the input which in the case
of raw_input is a string. We then convert this string to an integer using int and then store it in the
variable guess. Actually, the int is a class but all you need to know right now is that you can use it to
convert a string to an integer (assuming the string contains a valid integer in the text).
Next, we compare the guess of the user with the number we have chosen. If they are equal, we print a
success message. Notice that we use indentation levels to tell Python which statements belong to which
block. This is why indentation is so important in Python. I hope you are sticking to 'one tab per indentation
level' rule. Are you?
Notice how the if statement contains a colon at the end - we are indicating to Python that a block of
statements follows.
Then, we check if the guess is less than the number, and if so, we inform the user to guess a little higher
than that. What we have used here is the elif clause which actually combines two related if elseif
else statements into one combined if-elif-else statement. This makes the program easier
and reduces the amount of indentation required.
The elif and else statements must also have a colon at the end of the logical line followed by their
corresponding block of statements (with proper indentation, of course)
You can have another if statement inside the if-block of an if statement and so on - this is called a
nested if statement.
Remember that the elif and else parts are optional. A minival valid if statement is
if True:
print 'Yes, it is true'
After Python has finished executing the complete if statement along with the assocated elif and
else clauses, it moves on to the next statement in the block containing the if statement. In this case, it
is the main block where execution of the program starts and the next statement is the print 'Done'
statement. After this, Python sees the ends of the program and simply finishes up.


Although this is a very simple program, I have been pointing out a lot of things that you should notice
even in this simple program. All these are pretty straightforward (and surprisingly simple for those of
you from C/C++ backgrounds) and requires you to become aware of all these initially, but after that, you
will become comfortable with it and it'll feel 'natural' to you.
Note for C/C++ Programmers
There is no switch statement in Python. You can use an if..elif..else statement to do
the same thing (and in some cases, use a dictionary to do it quickly)


Using Expressions



Example 5.1. Using Expressions
#!/usr/bin/python
# Filename: expression.py
length = 5
breadth = 2
area = length * breadth
print 'Area is', area
print 'Perimeter is', 2 * (length + breadth)
Output
$ python expression.py
Area is 10
Perimeter is 14
How It Works
The length and breadth of the rectangle are stored in variables by the same name. We use these to calculate
the area and perimieter of the rectangle with the help of expressions. We store the result of the expression
length * breadth in the variable area and then print it using the print statement. In
the second case, we directly use the value of the expression 2 * (length + breadth) in the print
statement.
Also, notice how Python 'pretty-prints' the output. Even though we have not specified a space between
'Area is' and the variable area, Python puts it for us so that we get a clean nice output and the program
is much more readable this way (since we don't need to worry about spacing in the output). This is
an example of how Python makes life easy for the programmer.