Getting Started With Python
Getting Started With Python
ABOUT PYTHON
• Development started in the 1980’s by Guido van Rossum.
• Only became popular in the last decade or so.
• Python 2.x currently dominates, but Python 3.x is the future of Python.
• Interpreted, very-high-level programming language.
• Supports a multitude of programming paradigms.
• OOP, functional, procedural, logic, structured, etc.
• General purpose.
• Very comprehensive standard library includes numeric modules, crypto services, OS interfaces,
networking modules, GUI support, development tools, etc.
PHILOSOPHY
From The Zen of Python (https://www.python.org/dev/peps/pep-0020/)
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
NOTABLE FEATURES
• Easy to learn.
• Supports quick development.
• Cross-platform.
• Open Source.
• Extensible.
• Embeddable.
• Large standard library and active community.
• Useful for a wide variety of applications.
GETTING STARTED
Before we can begin, we need to actually install Python!
The first thing you should do is download and install our custom guide to setting up a
virtual machine and write your first Python program.
We will be using an Ubuntu virtual machine in this course. All instructions and examples
will target this environment – this will make your life much easier.
Do not put this off until your first assignment is due!
GETTING STARTED
• Choose and install an editor.
• For Linux, I prefer SublimeText.
• Windows users will likely use Idle by default.
• Options include vim, emacs, Notepad++, PyCharm, Eclipse, etc.
Throughout this course, I will be using SublimeText in an Ubuntu environment for all of
the demos.
INTERPRETER
• The standard implementation of Python is interpreted.
• You can find info on various implementations here.
• The interpreter translates Python code into bytecode, and this bytecode is executed
by the Python VM (similar to Java).
• Two modes: normal and interactive.
• Normal mode: entire .py files are provided to the interpreter.
• Interactive mode: read-eval-print loop (REPL) executes statements piecewise.
INTERPRETER: NORMAL MODE
Let’s write our first Python program!
In our favorite editor, let’s create helloworld.py with the following contents:
#!/usr/bin/env python
print "Hello, World!"
$ ./helloworld.py
Hello, World!
INTERPRETER: INTERACTIVE MODE
$ python
>>> print "Hello, World!"
Let’s accomplish the same task Hello, World!
(and more) in interactive mode. >>> hellostring = "Hello, World!"
>>> hellostring
'Hello, World!'
>>> 2*5
Some options: 10
-c : executes single command. >>> 2*hellostring
'Hello, World!Hello, World!'
-O: use basic optimizations. >>> for i in range(0,3):
-d: debugging info. ... print "Hello, World!"
More can be found here. ...
Hello, World!
Hello, World!
Hello, World!
>>> exit()
$
SOME FUNDAMENTALS
• Whitespace is significant in Python. Where other languages may use {} or (), Python
uses indentation to denote code blocks.
# here’s a comment
for i in range(0,3):
• Comments print i
• Single-line comments denoted by #. def myfunc():
• Multi-line comments begin and end with three “s. """here’s a comment about
• Typically, multi-line comments are meant for documentation. the myfunc function"""
• Comments should express information that cannot be expressed print "I'm in a function!"
in code – do not restate code.
PYTHON TYPING
• Python is a strongly, dynamically typed language.
• Strong Typing
• Obviously, Python isn’t performing static type checking, but it does prevent mixing operations between
mismatched types.
• Explicit conversions are required in order to mix types.
• Example: 2 + “four” not going to fly
• Dynamic Typing
• All type checking is done at runtime.
• No need to declare a variable or give it a type before use.
• All numeric types, except complex, support the typical numeric operations you’d
expect to find (a list is available here).
• Mixed arithmetic is supported, with the “narrower” type widened to that of the
other. The same rule is used for mixed comparisons.
NUMERIC TYPES
$ python
>>> 3 + 2
• Numeric 5
• int: equivalent to C’s long int in 2.x but unlimited in 3.x. >>> 18 % 5
• float: equivalent to C’s doubles. 3
• long: unlimited in 2.x and unavailable in 3.x.
>>> abs(-7)
7
• complex: complex numbers.
>>> float(9)
9.0
• Supported operations include constructors (i.e. int(3)),
arithmetic, negation, modulus, absolute value,
>>> int(5.3)
exponentiation, etc. 5
>>> complex(1,2)
(1+2j)
>>> 2 ** 8
256
SEQUENCE DATA TYPES
There are seven sequence subtypes: strings, Unicode strings, lists, tuples, bytearrays,
buffers, and xrange objects.
All data types support arrays of objects but with varying limitations.
The most commonly used sequence data types are strings, lists, and tuples. The
xrange data type finds common use in the construction of enumeration-controlled
loops. The others are used less commonly.
SEQUENCE TYPES: STRINGS
Created by simply enclosing characters in either single- or double-quotes.
It’s enough to simply assign the string to a variable.
Strings are immutable.
There are a tremendous amount of built-in string methods (listed here).
Operation Result
s[i] = x Item i of s is replaced by x.
s[i:j] = t Slice of s from i to j is replaced by the contents of t.
del s[i:j] Same as s[i:j] = [].
s[i:j:k] = t The elements of s[i:j:k] are replaced by those of t.
del s[i:j:k] Removes the elements of s[i:j:k] from the list.
s.append(x) Add x to the end of s.
COMMON SEQUENCE OPERATIONS
Mutable sequence types further
support the following operations.
That’s not enough to create a useful program, so let’s get some control flow tools
under our belt.
CONTROL FLOW TOOLS
i = 1
While loops have the following
general structure. while i < 4:
print i
while expression: i = i + 1
statements flag = True
while flag and i < 8:
Here, statements refers to one or
more lines of Python code. The print flag, i
conditional expression may be any i = i + 1
expression, where any non-zero
value is true. The loop iterates while 1
the expression is true.
2
Note: All the statements indented by 3
the same amount after a
programming construct are True 4
considered to be part of a single True 5
block of code. True 6
True 7
CONTROL FLOW TOOLS
a = 1
b = 0
The if statement has the following if a:
general form. print "a is true!“
if expression: if not b:
statements print "b is false!“
if a and b:
print "a and b are true!“
If the boolean expression evaluates if a or b:
to True, the statements are executed. print "a or b is true!"
Otherwise, they are skipped entirely.
a is true!
b is false!
a or b is true!
CONTROL FLOW TOOLS
a = 1
You can also pair an else with an b = 0
if statement. c = 2
if a > b:
if expression: if a > c:
statements print "a is greatest"
else: else:
statements print "c is greatest"
elif b > c:
The elif keyword can be used to print "b is greatest"
specify an else if statement. else:
print "c is greatest"
Furthermore, if statements may be
nested within eachother.
c is greatest
CONTROL FLOW TOOLS for letter in "aeiou":
print "vowel: ", letter
for i in [1,2,3]:
The for loop has the following general form. print i
for i in range(0,3):
for var in sequence: print i
statements
vowel: a
If a sequence contains an expression list, it is vowel: e
evaluated first. Then, the first item in the sequence vowel: i
is assigned to the iterating variable var. Next, the vowel: o
statements are executed. Each item in the vowel: u
sequence is assigned to var, and the statements 1
are executed until the entire sequence is 2
exhausted. 3
For loops may be nested with other control flow 0
tools such as while loops and if statements. 1
2
CONTROL FLOW TOOLS for i in xrange(0, 4):
print i
for i in range(0,8,2):
print i
Python has two handy functions for creating a range for i in range(20,14,-2):
of integers, typically used in for loops. These functions print i
are range() and xrange().
They both create a sequence of integers, but range() 0
creates a list while xrange() creates an xrange object. 1
Essentially, range() creates the list statically while 2
xrange() will generate items in the list as they are 3
needed. We will explore this concept further in just a 0
week or two. 2
4
For very large ranges – say one billion values – you 6
should use xrange() instead. For small ranges, it 20
doesn’t matter. 18
16
CONTROL FLOW TOOLS for num in range(10,20):
if num%2 == 0:
continue
for i in range(3,num):
There are four statements provided for if num%i == 0:
manipulating loop structures. These are break
break, continue, pass, and else. else:
print num, 'is a prime number'
• break: terminates the current loop.
• continue: immediately begin the next 11 is a prime number
iteration of the loop. 13 is a prime number
17 is a prime number
• pass: do nothing. Use when a statement 19 is a prime number
is required syntactically.
• else: represents a set of statements that
should execute when a loop terminates.
OUR FIRST REAL PYTHON PROGRAM
Ok, so we got some basics out of the way. Now, we can try to create a real program.
I pulled a problem off of Project Euler. Let’s have some fun.
Each new term in the Fibonacci sequence is generated by adding the previous two
terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four
million, find the sum of the even-valued terms.
A SOLUTION USING BASIC PYTHON
from __future__ import print_function Notice we’re using the Python 3.x
version of print here.
total = 0
f1, f2 = 1, 2
while f1 < 4000000:
if f1 % 2 == 0: Python supports multiple
total = total + f1 assignment at once.
f1, f2 = f2, f1 + f2 Right hand side is fully evaluated
print(total) before setting the variables.
Output: 4613732
FUNCTIONS
# Defining the function
def print_greeting():
A function is created with the def print "Hello!"
keyword. The statements in the block of print "How are you today?"
the function must be indented.
print_greeting() # Calling the function
def function_name(args):
statements Hello!
How are you today?
The def keyword is followed by the
function name with round brackets
enclosing the arguments and a colon. The
indented statements form a body of the
function.
The return keyword is used to specify a list
of values to be returned.
FUNCTIONS def hello_func(name, somelist):
print "Hello,", name, "!\n“
name = "Caitlin"
All parameters in the Python language somelist[0] = 3
are passed by reference. return 1, 2
myname = "Ben"
However, only mutable objects can be mylist = [1,2]
changed in the called function. a,b = hello_func(myname, mylist)
print myname, mylist
We will talk about this in more detail
print a, b
later.
Hello, Ben !
Ben [3, 2]
12
FUNCTIONS
Hello, Susan !
What is the output of the following code? Hello, Peter !
Hello, William !
def hello_func(names): The names are now [‘Susie’, ‘Pete’, ‘Will’] .
for n in names:
print "Hello,", n, "!"
names[0] = 'Susie’
names[1] = 'Pete’
names[2] = 'Will’
names = ['Susan', 'Peter', 'William']
hello_func(names)
print "The names are now", names, "."
A SOLUTION WITH FUNCTIONS
from __future__ import print_function
if __name__ == "__main__":
limit = raw_input(“Enter the max Fibonacci number: ")
print(even_fib(int(limit)))
CODING STYLE
So now that we know how to write a Python program, let’s break for a bit to think
about our coding style. Python has a style guide that is useful to follow, you can read
about PEP 8 here.
I encourage you all to check out pylint, a Python source code analyzer that helps you
maintain good coding standards.