1. Getting Started¶
1.1. Running Python Interpreter¶
Python comes with an interactive interpreter. When you type
python in your
shell or command prompt, the python interpreter becomes active with a
prompt and waits for your commands.
$ python Python 2.7.1 (r271:86832, Mar 17 2011, 07:02:35) [GCC 4.2.1 (Apple Inc. build 5664)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>
Now you can type any valid python expression at the prompt. python reads the typed expression, evaluates it and prints the result.
>>> 42 42 >>> 4 + 2 6
Problem 1: Open a new Python interpreter and use it to find the value of
2 + 3.
1.2. Running Python Scripts¶
Open your text editor, type the following text and save it as
print "hello, world!"
And run this program by calling
python hello.py. Make sure you change to
the directory where you saved the file before doing it.
anand@bodhi ~$ python hello.py hello, world! anand@bodhi ~$
# character in any line is considered as comment.
# This is helloworld program # run this as: # python hello.py print "hello, world!"
Problem 2: Create a python script to print
hello, world! four times.
Problem 3: Create a python script with the following text and see the output.
1 + 2
If it doesn’t print anything, what changes can you make to the program to print the value?
One of the building blocks of programming is associating a name to a value. This is called assignment. The associated name is usually called a variable.
>>> x = 4 >>> x * x 16
In this example
x is a variable and it’s value is
If you try to use a name that is not associated with any value, python gives an error message.
>>> foo Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'foo' is not defined >>> foo = 4 >>> foo 4
If you re-assign a different value to an existing variable, the new value overwrites the old value.
>>> x = 4 >>> x 4 >>> x = 'hello' >>> x 'hello'
It is possible to do multiple assignments at once.
>>> a, b = 1, 2 >>> a 1 >>> b 2 >>> a + b 3
Swapping values of 2 variables in python is very simple.
>>> a, b = 1, 2 >>> a, b = b, a >>> a 2 >>> b 1
When executing assignments, python evaluates the right hand side first and then assigns those values to the variables specified in the left hand side.
Problem 4: What will be output of the following program.
x = 4 y = x + 1 x = 2 print x, y
Problem 5: What will be the output of the following program.
x, y = 2, 6 x, y = y, x + 2 print x, y
Problem 6: What will be the output of the following program.
a, b = 2, 3 c, b = a, c + 1 print a, b, c
We already know how to work with numbers.
>>> 42 42 >>> 4 + 2 6
Python also supports decimal numbers.
>>> 4.2 4.2 >>> 4.2 + 2.3 6.5
Python supports the following operators on numbers.
Let’s try them on integers.
>>> 7 + 2 9 >>> 7 - 2 5 >>> 7 * 2 14 >>> 7 / 2 3 >>> 7 ** 2 49 >>> 7 % 2 1
If you notice, the result
7 / 2 is
3.5. It is because the
/ operator when working on integers, produces only an integer. Lets see what happens when we try it with decimal numbers:
>>> 7.0 / 2.0 3.5 >>> 7.0 / 2 3.5 >>> 7 / 2.0 3.5
The operators can be combined.
>>> 7 + 2 + 5 - 3 11 >>> 2 * 3 + 4 10
It is important to understand how these compound expressions are evaluated. The operators have precedence, a kind of priority that determines which operator is applied first. Among the numerical operators, the precedence of operators is as follows, from low precedence to high.
When we compute
2 + 3 * 4,
3 * 4 is computed first as the precedence of
* is higher than
+ and then the result is added to 2.
>>> 2 + 3 * 4 14
We can use parenthesis to specify the explicit groups.
>>> (2 + 3) * 4 20
All the operators except
** are left-associcate, that means that the application of the operators starts from left to right.
1 + 2 + 3 * 4 + 5 ↓ 3 + 3 * 4 + 5 ↓ 3 + 12 + 5 ↓ 15 + 5 ↓ 20
Strings what you use to represent text.
Strings are a sequence of characters, enclosed in single quotes or double quotes.
>>> x = "hello" >>> y = 'world' >>> print x, y hello world
There is difference between single quotes and double quotes, they can used interchangebly.
Multi-line strings can be written using three single quotes or three double quotes.
x = """This is a multi-line string written in three lines.""" print x y = '''multi-line strings can be written using three single quote characters as well. The string can contain 'single quotes' or "double quotes" in side it.''' print y
Just like a value can be associated with a name, a piece of logic can also be associated with a name by defining a function.
>>> def square(x): ... return x * x ... >>> square(5) 25
The body of the function is indented. Indentation is the Python’s way of grouping statements.
... is the secondary prompt, which the Python interpreter uses to
denote that it is expecting some more input.
The functions can be used in any expressions.
>>> square(2) + square(3) 13 >>> square(square(3)) 81
Existing functions can be used in creating new functions.
>>> def sum_of_squares(x, y): ... return square(x) + square(y) ... >>> sum_of_squares(2, 3) 13
Functions are just like other values, they can assigned, passed as arguments to other functions etc.
>>> f = square >>> f(4) 16 >>> def fxy(f, x, y): ... return f(x) + f(y) ... >>> fxy(square, 2, 3) 13
It is important to understand, the scope of the variables used in functions.
Lets look at an example.
x = 0 y = 0 def incr(x): y = x + 1 return y incr(5) print x, y
Variables assigned in a function, including the arguments are called the local variables to the function. The variables defined in the top-level are called global variables.
Changing the values of
y inside the function
effect the values of global
But, we can use the values of the global variables.
pi = 3.14 def area(r): return pi * r * r
When Python sees use of a variable not defined locally, it tries to find a global variable with that name.
However, you have to explicitly declare a variable as
global to modify it.
numcalls = 0 def square(x): global numcalls numcalls = numcalls + 1 return x * x
Problem 7: How many multiplications are performed when each of the following lines of code is executed?
print square(5) print square(2*5)
Problem 8: What will be the output of the following program?
x = 1 def f(): return x print x print f()
Problem 9: What will be the output of the following program?
x = 1 def f(): x = 2 return x print x print f() print x
Problem 10: What will be the output of the following program?
x = 1 def f(): y = x x = 2 return x + y print x print f() print x
Problem 11: What will be the output of the following program?
x = 2 def f(a): x = a * a return x y = f(3) print x, y
Functions can be called with keyword arguments.
>>> def difference(x, y): ... return x - y ... >>> difference(5, 2) 3 >>> difference(x=5, y=2) 3 >>> difference(5, y=2) 3 >>> difference(y=2, x=5) 3
And some arguments can have default values.
>>> def increment(x, amount=1): ... return x + amount ... >>> increment(10) 11 >>> increment(10, 5) 15 >>> increment(10, amount=2) 12
There is another way of creating functions, using the
>>> cube = lambda x: x ** 3 >>> fxy(cube, 2, 3) 35 >>> fxy(lambda x: x ** 3, 2, 3) 35
Notice that unlike function defination, lambda doesn’t need a
body of the
lambda is a single expression.
lambda operator becomes handy when writing small functions to be
passed as arguments etc. We’ll see more of it as we get into solving more
1.6.1. Built-in Functions¶
Python provides some useful built-in functions.
>>> min(2, 3) 2 >>> max(3, 4) 4
The built-in function
len computes length of a string.
>>> len("helloworld") 10
The built-in function
int converts string to ingeter and built-in function
str converts integers and other type of objects to strings.
>>> int("50") 50 >>> str(123) "123"
Problem 12: Write a function
count_digits to find number of digits in the given number.
>>> count_digits(5) 1 >>> count_digits(12345) 5
Methods are special kind of functions that work on an object.
upper is a method available on string objects.
>>> x = "hello" >>> print x.upper() HELLO
As already mentioned, methods are also functions. They can be assigned to other variables can be called separately.
>>> f = x.upper >>> print f() HELLO
Problem 13: Write a function istrcmp to compare two strings, ignoring the case.
>>> istrcmp('python', 'Python') True >>> istrcmp('LaTeX', 'Latex') True >>> istrcmp('a', 'b') False
1.7. Conditional Expressions¶
Python provides various operators for comparing values. The result of a comparison is a boolean value, either
>>> 2 < 3 False >>> 2 > 3 True
Here is the list of available conditional operators.
!=not equal to
<=less than or equal to
>=greater than or equal to
It is even possible to combine these operators.
>>> x = 5 >>> 2 < x < 10 True >>> 2 < 3 < 4 < 5 < 6 True
The conditional operators work even on strings - the ordering being the lexical order.
>>> "python" > "perl" True >>> "python" > "java" True
There are few logical operators to combine boolean values.
a and bis
Trueonly if both
a or bis True if either
not ais True only if
>>> True and True True >>> True and False False >>> 2 < 3 and 5 < 4 False >>> 2 < 3 or 5 < 4 True
Problem 14: What will be output of the following program?
print 2 < 3 and 3 > 1 print 2 < 3 or 3 > 1 print 2 < 3 or not 3 > 1 print 2 < 3 and not 3 > 1
Problem 15: What will be output of the following program?
x = 4 y = 5 p = x < y or x < z print p
Problem 16: What will be output of the following program?
True, False = False, True print True, False print 2 < 3
1.7.1. The if statement¶
if statement is used to execute a piece of code only when a boolean expression is true.
>>> x = 42 >>> if x % 2 == 0: print 'even' even >>>
In this example,
print 'even' is executed only when
x % 2 == 0 is
The code associated with
if can be written as a separate indented block of code, which is often the case when there is more than one statement to be executed.
>>> if x % 2 == 0: ... print 'even' ... even >>>
if statement can have optional
else clause, which is executed when the boolean expression is
>>> x = 3 >>> if x % 2 == 0: ... print 'even' ... else: ... print 'odd' ... odd >>>
if statement can have optional
elif clauses when there are more
conditions to be checked. The
elif keyword is short for
else if, and is
useful to avoid excessive indentation.
>>> x = 42 >>> if x < 10: ... print 'one digit number' ... elif x < 100: ... print 'two digit number' ... else: ... print 'big number' ... two digit number >>>
Problem 17: What happens when the following code is executed? Will it give any error? Explain the reasons.
x = 2 if x == 2: print x else: print y
Problem 18: What happens the following code is executed? Will it give any error? Explain the reasons.
x = 2 if x == 2: print x else: x +
Lists are one of the great datastructures in Python. We are going to learn a little bit about lists now. Basic knowledge of lists is requrired to be able to solve some problems that we want to solve in this chapter.
Here is a list of numbers.
>>> x = [1, 2, 3]
And here is a list of strings.
>>> x = ["hello", "world"]
List can be heterogeneous. Here is a list containings integers, strings and another list.
>>> x = [1, 2, "hello", "world", ["another", "list"]]
The built-in function
len works for lists as well.
>>> x = [1, 2, 3] >>> len(x) 3
 operator is used to access individual elements of a list.
>>> x = [1, 2, 3] >>> x 2 >>> x = 4 >>> x 4
The first element is indexed with
0, second with
1 and so on.
We’ll learn more about lists in the next chapter.
Modules are libraries in Python. Python ships with many standard library modules.
A module can be imported using the
Lets look at
time module for example:
>>> import time >>> time.asctime() 'Tue Sep 11 21:42:06 2012'
asctime function from the
time module returns the current time of
the system as a string.
sys module provides access to the list of arguments passed to the
program, among the other things.
sys.argv variable contains the list of arguments passed to the program.
As a convention, the first element of that list is the name of the program.
Lets look at the following program
echo.py that prints the first argument
passed to it.
import sys print sys.argv
Lets try running it.
$ python echo.py hello hello $ python echo.py hello world hello
There are many more interesting modules in the standard library. We’ll learn more about them in the coming chapters.
Problem 19: Write a program
add.py that takes 2 numbers as command line
arguments and prints its sum.
$ python add.py 3 5 8 $ python add.py 2 9 11