Python
Python
Computer
Programming using
Python
University of Mines and Technology
Faculty of Computing and Mathematical Sciences
Computer Science and Engineering Department
Prepared by Engr Mensah Sitti
Overview
• History
• Installing & Running Python
• Names & Assignment
• Sequences types: Lists, Tuples, and
Strings
• Mutability
Brief History of Python
• Invented in the Netherlands, early 90s
by Guido van Rossum
• Named after Monty Python
• Open sourced from the beginning
• Considered a scripting language, but is
much more
• Scalable, object oriented and functional
from the beginning
• Used by Google from the beginning
• Increasingly popular
Python’s Benevolent Dictator For Life
“Python is an experiment in
how much freedom program-
mers need. Too much freedom
and nobody can read another's
code; too little and expressive-
ness is endangered.”
- Guido van Rossum
http://docs.python.org/
The Python tutorial is good!
Features of Python
Programming language
Running
Python
The Python Interpreter
• Typical Python implementations offer
both an interpreter and compiler
• Interactive interface to Python with a
read-eval-print loop
[finin@linux2 ~]$ python
Python 2.4.3 (#1, Jan 14 2008, 18:32:40)
[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def square(x):
... return x * x
...
>>> map(square, [1, 2, 3, 4])
[1, 4, 9, 16]
>>>
Installing
• Python is pre-installed on most Unix systems,
including Linux and MAC OS X
• The pre-installed version may not be the most
recent one (2.6.2 and 3.1.1 as of Sept 09)
• Download from http://python.org/download/
• Python comes with a large library of standard
modules
• There are several options for an IDE
• IDLE – works well with Windows
• Emacs with python-mode or your favorite text editor
• Eclipse with Pydev (http://pydev.sourceforge.net/)
IDLE Development Environment
• IDLE is an Integrated DeveLopment Environ-
ment for Python, typically used on Windows
• Multi-window text editor with syntax
highlighting, auto-completion, smart indent
and other.
• Python shell with syntax highlighting.
• Integrated debugger
with stepping, persis-
tent breakpoints,
and call stack visi-
bility
Editing Python in Emacs
• Emacs python-mode has good support for editing
Python, enabled enabled by default for .py files
• Features: completion, symbol help, eldoc, and inferior
interpreter shell, etc.
Languages
• Some influential ones:
• FORTRAN
—science / engineering
• COBOL
—business data
• LISP
—logic and AI
• BASIC
—a simple language
13
Programming basics
• code or source code: The sequence of instructions in a program.
14
Compiling and interpreting
• Many languages require you to compile
(translate) your program into a form that the
machine understands.
compile execute
source code byte code output
Hello.java Hello.class
15
Running Interactively on UNIX
On Unix…
% python
>>> 3+3
6
• Python prompts with ‘>>>’.
• To exit Python (not Idle):
• In Unix, type CONTROL-D
• In Windows, type CONTROL-Z + <Enter>
• Evaluate exit()
Running Programs on UNIX
• Call python program via the python interpreter
% python fact.py
• Make a python file directly executable by
• Adding the appropriate path to your python
interpreter as the first line of your file
#!/usr/bin/python
• Making the file executable
% chmod a+x fact.py
• Invoking file from Unix command line
% fact.py
Example ‘script’: fact.py
#! /usr/bin/python
def fact(x):
"""Returns the factorial of its argument, assumed to be a posint"""
if x == 0:
return 1
return x * fact(x - 1)
print
print ’N fact(N)’
print "---------"
for n in range(10):
print n, fact(n)
Python Scripts
• When you call a python program from the
command line the interpreter evaluates each
expression in the file
• Familiar mechanisms are used to provide
command line arguments and/or redirect
input and output
• Python also has mechanisms to allow a
python program to act both as a script and as
a module to be imported and used by another
python program
Example of a Script
#! /usr/bin/python
""" reads text from standard input and outputs any email
addresses it finds, one to a line.
"""
import re
from sys import stdin
# a regular expression ~ for a valid email address
pat = re.compile(r'[-\w][-.\w]*@[-\w][-\w.]+[a-zA-Z]{2,4}')
for line in stdin.readlines():
for address in pat.findall(line):
print address
results
22
Integer division
• When we divide integers with / , the quotient is also an integer.
3 52
4 ) 14 27 ) 1425
12 135
2 75
54
21
• More examples:
— 35 / 5 is 7
— 84 / 10 is 8
— 156 / 100 is 1
23
Real numbers
• Python can also manipulate real numbers.
• Examples: 6.022 -15.9997 42.0
2.143e17
• The operators + - * / % ** ( ) all work for real numbers.
• The / produces an exact answer: 15.0 / 2.0 is 7.5
• The same rules of precedence also apply to real numbers:
Evaluate ( ) before * / % before + -
• When integers and reals are mixed, the result is a real
number.
• Example: 1 / 2.0 is 0.5
• The conversion occurs on a per-operator basis.
• 7 / 3 * 1.2 + 3 / 2
• 2 * 1.2 + 3 / 2
• 2.4 + 3 / 2
• 2.4 + 1
• 3.4
24
Math commands
• Python has useful commands for performing calculations.
Command name Description Constant Description
abs(value) absolute value e 2.7182818...
ceil(value) rounds up pi 3.1415926...
cos(value) cosine, in radians
floor(value) rounds down
log(value) logarithm, base e
log10(value) logarithm, base 10
max(value1, value2) larger of two values
min(value1, value2) smaller of two values
round(value) nearest whole number
sin(value) sine, in radians
sqrt(value) square root
• Examples: x = 5
gpa = 3.14
x 5 gpa 3.14
• Syntax:
print "Message"
print Expression
• Prints the given text message or expression value on the console, and moves the
cursor down to the next line.
print Item1, Item2, ..., ItemN
• Prints several messages and/or expressions on the same line.
• Examples:
print "Hello, world!"
age = 45
print "You have", 65 - age, "years until retirement"
Output:
Hello, world!
You have 20 years until retirement
27
input
• input : Reads a number from user input.
• You can assign (store) the result of input into a variable.
• Example:
age = input("How old are you? ")
print "Your age is", age
print "You have", 65 - age, "years until retirement"
Output:
How old are you? 53
Your age is 53
You have 12 years until retirement
• Try Exercise:
Write a Python program that prompts the user for his/her
amount of money, then creates a budget for the user for a
semester based on the needs of a first year student, and
inform the user how to spend his/her money for the semester.
28
Getting a unique, sorted list
import re
from sys import stdin
pat = re.compile(r'[-\w][-.\w]*@[-\w][-\w.]+[a-zA-Z]{2,4}’)
# found is an initially empty set (a list w/o duplicates)
found = set( )
for line in stdin.readlines():
for address in pat.findall(line):
found.add(address)
# sorted() takes a sequence, returns a sorted list of its elements
for address in sorted(found):
print address
results
def fact1(n):
ans = 1
for i in range(2,n):
ans = ans * n
return ans
def fact2(n):
if n < 1:
return 1
else:
return n * fact2(n - 1)
Simple functions: ex.py
671> python
Python 2.5.2 …
>>> import ex
>>> ex.fact1(6)
1296
>>> ex.fact2(200)
78865786736479050355236321393218507…000000L
>>> ex.fact1
<function fact1 at 0x902470>
>>> fact1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'fact1' is not defined
>>>
The Basics
A Code Sample (in IDLE)
x = 34 - 23 # A comment.
y = “Hello” # Another one.
z = 3.45
if z == 3.45 or y == “Hello”:
x = x + 1
y = y + “ World” # String concat.
print x
print y
Enough to Understand the Code
• Indentation matters to code meaning
• Block structure indicated by indentation
• First assignment to a variable creates it
• Variable types don’t need to be declared.
• Python figures out the variable types on its own.
• Assignment is = and comparison is ==
• For numbers + - * / % are as expected
• Special use of + for string concatenation and % for
string formatting (as in C’s printf)
• Logical operators are words (and, or,
not) not symbols
• The basic printing command is print
Basic Datatypes
• Integers (default for numbers)
z = 5 / 2 # Answer 2, integer division
• Floats
x = 3.456
• Strings
• Can use “” or ‘’ to specify with “abc” ==
‘abc’
• Unmatched can occur within the string:
“matt’s”
• Use triple double-quotes for multi-line strings or
strings than contain both ‘ and “ inside of them:
“““a‘b“c”””
Whitespace
Whitespace is meaningful in Python: especially
indentation and placement of newlines
•Use a newline to end a line of code
Use \ when must go to next line prematurely
•No braces {} to mark blocks of code, use
consistent indentation instead
• First line with less indentation is outside of the block
• First line with more indentation starts a nested block
•Colons start of a new block in many constructs,
e.g. function definitions, then clauses
Comments
• Start comments with #, rest of line is ignored
• Can include a “documentation string” as the
first line of a new function or class you define
• Development environments, debugger, and
other tools use it: it’s good style to include one
def fact(n):
“““fact(n) assumes n is a positive
integer and returns facorial of n.”””
assert(n>0)
return 1 if n==1 else n*fact(n-1)
Assignment
• Binding a variable in Python means setting a name to
hold a reference to some object
• Assignment creates references, not copies
• Names in Python do not have an intrinsic type,
objects have types
• Python determines the type of the reference automatically
based on what data is assigned to it
• You create a name the first time it appears on the left
side of an assignment expression:
x = 3
• A reference is deleted via garbage collection after
any names bound to it have passed out of scope
• Python uses reference semantics (more later)
Naming Rules
• Names are case sensitive and cannot start
with a number. They can contain letters,
numbers, and underscores.
bob Bob _bob _2_bob_ bob_2 BoB
• There are some reserved words:
and, assert, break, class, continue,
def, del, elif, else, except, exec,
finally, for, from, global, if,
import, in, is, lambda, not, or,
pass, print, raise, return, try,
while
Naming conventions
The Python community has these recommend-
ed naming conventions
•joined_lower for functions, methods and,
attributes
•joined_lower or ALL_CAPS for constants
•StudlyCaps for classes
•camelCase only to conform to pre-existing
conventions
•Attributes: interface, _internal, __private
Assignment
• You can assign to multiple names at the
same time
>>> x, y = 2, 3
>>> x
2
>>> y
3
This makes it easy to swap values
>>> x, y = y, x
• Assignments can be chained
>>> a = b = x = 2
Accessing Non-Existent Name
Accessing a name before it’s been properly
created (by placing it on the left side of an
assignment), raises an error
>>> y
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> “Hello” * 3
‘HelloHelloHello’
Repetition (loops)
and Selection (if/else)
5
The for loop
• for loop: Repeats a set of statements over a group of values.
• Syntax:
for variableName in groupOfValues:
statements
— We indent the statements to be repeated with tabs or spaces.
— variableName gives a name to each value, so you can refer to it in the
statements.
— groupOfValues can be a range of integers, specified with the range function.
• Example:
for x in range(1, 6):
print x, "squared is", x * x
Output:
1 squared is 1
2 squared is 4
3 squared is 9
4 squared is 16
5 squared is 25
57
range
• The range function specifies a range of integers:
— range(start, stop) - the integers between start (inclusive)
and stop (exclusive)
• It can also accept a third value specifying the change between values.
— range(start, stop, step) - the integers between start
(inclusive)
and stop (exclusive) by step
• Example:
for x in range(5, 0, -1):
print x
print "Blastoff!"
Output:
5
4
3
2
1
Blastoff!
• Exercise: How would we print the "99 Bottles of Beer" song?
58
Cumulative loops
• Some loops incrementally compute a value that is
initialized outside the loop. This is sometimes
called a cumulative sum.
sum = 0
for i in range(1, 11):
sum = sum + (i * i)
print "sum of first 10 squares is", sum
Output:
sum of first 10 squares is 385
59
if
• if statement: Executes a group of
statements only if a certain condition is
true. Otherwise, the statements are
skipped.
• Syntax:
if condition:
statements
• Example:
gpa = 3.4
if gpa > 2.0:
print "Your application is accepted."
60
if/else
• if/else statement: Executes one block of statements if a certain
condition is True, and a second block of statements if it is False.
• Syntax:
if condition:
statements
else:
statements
• Example:
gpa = 1.4
if gpa > 2.0:
print "Welcome to Mars University!"
else:
print "Your application is denied."
• Syntax:
while condition:
statements
• Example:
number = 1
while number < 200:
print number,
number = number * 2
• Output:
1 2 4 8 16 32 64 128
62
Logic
• Many logical expressions use relational
operators:
Operator Meaning Example Result
== equals 1 + 1 == 2 True
!= does not equal 3.2 != 2.5 True
< less than 10 < 5 False
> greater than 10 > 5 True
<= less than or equal to 126 <= 100 False
>= greater than or equal to 5.0 >= 5.0 True
• Potentially confusing:
• extend takes a list as an argument.
• append takes a singleton as an argument.
>>> li.append([10, 11, 12])
>>> li
[1, 2, ‘i’, 3, 4, 5, ‘a’, 9, 8, 7, [10,
11, 12]]
Operations on Lists Only
Lists have many methods, including index, count,
remove, reverse, sort
>>> li = [‘a’, ‘b’, ‘c’, ‘b’]
>>> li.index(‘b’) # index of 1st occurrence
1
>>> li.count(‘b’) # number of occurrences
2
>>> li.remove(‘b’) # remove 1st occurrence
>>> li
[‘a’, ‘c’, ‘b’]
Operations on Lists Only
>>> li = [5, 2, 6, 8]
>>> li.sort(some_function)
# sort in place using user-defined comparison
Tuple details
• The comma is the tuple creation operator, not parens
>>> 1,
(1,)
74
File processing
• Many programs handle data, which often comes
from files.
Example:
file_text = open("bankaccount.txt").read()
75
Line-by-line processing
• Reading a file line-by-line:
for line in open("filename").readlines():
statements
Example:
count = 0
for line in open("bankaccount.txt").readlines():
count = count + 1
print "The file contains", count, "lines."
76
Graphics
7
DrawingPanel
• To create a window, create a drawingpanel and
its graphical pen, which we'll call g :
from drawingpanel import *
panel = drawingpanel(width, height)
g = panel.get_graphics()
... (draw shapes here) ...
panel.mainloop()
• The above commands can accept optional outline and fill colors.
g.create_rectangle(10, 40, 22, 65, fill="red", outline="blue")
(200, 100)
79
Drawing with loops
• We can draw many repetitions of the same item at different
x/y positions with for loops.
• The x or y assignment expression contains the loop counter, i, so
that in each pass of the loop, when i changes, so does x or y.
from drawingpanel import *
window.mainloop()
80
What's Next?
8
Further programming
• Lab exercises
• Weekly lab Exercise in computer labs!
• Mini Project Assignment to groups
• What next?
• Arrays, data structures
• Algorithms: searching, sorting, recursion, etc.
• Objects and object-oriented programming
• Graphical user interfaces, event-driven programming
82