Python 3 Tutorial by Example

, , …,

This is a Python 3 tutorial. The goal is to get a quick working understanding of the language. Examples on this page are based on Python 3.2.3 on Linux. For python 2, see: Python 2 Basics.

Strings

Use single quote or double quote to quote string.

# -*- coding: utf-8 -*-
# python 3

# single and double quotes are same in Python
a = "tiger ♥"
b = 'rabbit ♥'

print(a, b)   # tiger ♥ rabbit ♥

You can use \n for linebreak, and \t for tab, etc.

Note: in python 3, you don't need the # -*- coding: utf-8 -*- at the top of the file. However, it's still nice to have, because it's a standard way to indicate what encoding is used for the file across many editors.

Triple Quotes for Multi-Line String

To quote a string of multiple lines, use triple quotes. Example:

# -*- coding: utf-8 -*-
# python 3

d = """this
will be printed
in 3 lines"""

print(d)

Quoting Raw String 「r"…"」

You can add r in front of the quote symbol. This way, backslash characters will NOT be interpreted as escapes.

# -*- coding: utf-8 -*-
# python 3

c = r"this\n and that"

print(c) # prints a single line

more detail: Python, Ruby, Perl: Quoting Strings

substring, length

Substring extraction is done by appending a bracket str[begin index:end index]. Index can be negative, which counts from the end.

# -*- coding: utf-8 -*-
# python 3

b="01234567"
print(b[1:4]) # prints “123”

Length of the string is len().

a="this"
print(len(a)) # 4

Strings can be joined by a plus sign +.

print("this" + " that")

String can be repeated using *.

print("this" * 2)

Arithmetic

# -*- coding: utf-8 -*-
# python 3

print(3 + 4)                    # 7
print(3 - 4)                    # -1
print(3 + - 4)                  # -1
print(3 * 4)                    # 12

print(2 ** 3)                    # 8 power

print(11 / 5)                    # 2.2  (in python 2, this would be 2)
print(11 // 5)                   # 2 (quotient)
print(11 % 5)                    # 1 remainder (modulo)

print(divmod(11, 5))            # (2, 1) quotient and remainder

Convert to {int, float, string}

Python doesn't automatically convert between {int, float, string}.

Assignment Operators

# -*- coding: utf-8 -*-
# Python 3

# add and assign
c = 0
c += 1
print(c)                        # 1

# substract and assign
c = 0
c -= 2
print(c)                        # -2

# multiply and assign
c = 2
c *= 3
print(c)                        # 6

# exponent and assign
c = 3
c **= 2
print(c)                        # 9

# divide and assign
c = 7
c /= 2
print(c)                        # 3.5

# modulus (remainder) and assign
c = 13
c %= 5
print(c)                        # 3

# quotient and assign
c = 13
c //= 5
print(c)                        # 2

Note: Python doesn't support ++ or --.

Warning: ++i may not generate any error, but it doesn't do anything.

For bitwise and other operators, see: Python 3: Operators.

True & False

False like things, such as False, 0, empty string, empty array, …, all evaluate to False.

The following evaluate to False:

# -*- coding: utf-8 -*-
# python 3

my_thing = []

if my_thing:
    print("yes")
else:
    print("no")

Conditional: if then else

#-*- coding: utf-8 -*-
# python 3

# Examples of if

x = -1
if x<0:
    print('neg')
elif x==0:
    print('zero')
elif x==1:
    print('one')
else:
    print('other')

# the elif can be omitted.

Loop, Iteration

Example of a “for” loop.

# -*- coding: utf-8 -*-
# python 3

a = list(range(1,5)) # creates a list from 1 to 4. (does NOT include the end)

for x in a:
    if x == 3:
        print(x)

# prints 3

The range(m, n) function gives a list from m to n-1.

Python also supports break and continue to exit loop.

#-*- coding: utf-8 -*-
# python 3

for x in range(1,9):
    print('yay:', x)
    if x == 5:
        break
# prints up to 5

Example of a “while” loop.

#-*- coding: utf-8 -*-
# python 3

x = 1
while x <= 5:
    print(x)
    x += 1

List

Creating a list.

a = [0, 1, 2, "more", 4, 5, 6]
print(a)

Counting elements:

a = ["more", 4, 6]
print(len(a)) # prints 3

Getting a element. Use the syntax list[index]. Index start at 0. Negative index counts from right. Last element has index -1.

a = ["more", 4, 6]
print(a[1])                     # prints 4

Extracting a sequence of elements (aka sublist, slice): list[start index:end index].

a = ["zero", "one", "two", "three", "four", "five", "six"]
print(a[2:4])   # prints ["two", "three"]

WARNING: The extraction is not inclusive. For example, mylist[2:4] returns only 2 elements, not 3.

Modify element: list[index] = new value

xx = ["a", "b", "c"]
xx[2] = "two"
print(xx) # → ['a', 'b', 'two']

A slice (continuous sequence) of elements can be changed by assigning to a list directly. The length of the slice need not match the length of new list.

# -*- coding: utf-8 -*-
# python 3

xx = [ "b0", "b1", "b2", "b3", "b4", "b5", "b6"]

xx[0:6] = ["two", "three"]

print(xx)                       # ['two', 'three', 'b6']

Nested Lists. Lists can be nested arbitrarily. Append extra bracket to get element of nested list.

a = [3, 4, [7, 8]]

print(a[2][1])                   # returns 8

List Join. Lists can be joined with plus sign.

b = ["a", "b"] + [7, 6]
print(b)                        # prints ['a', 'b', 7, 6]

Python, Ruby, Perl: List/Array Tutorial

Tuple

Python has a “tuple” type. It's like list, except it's immutable (that is, the elements cannot be changed, nor added/deleted).

Syntax for tuble is using round brackets () instead of square brackets. The brackets are optional when not ambiguous, but best to always use them.

# -*- coding: utf-8 -*-
# python 3

# tuple
t1 = (3, 4 , 5) # a tuple of 3 elements. paren optional when not ambiguous
print(t1)       # (3, 4 , 5)
print(t1[0])    # 3
# -*- coding: utf-8 -*-
# python 3

# nested tuple
t2 = ((3,8), (4,9), ("a", 5, 5))
print(t2[0])                           # (3,8)
print(t2[0][0])                        # 3
# -*- coding: utf-8 -*-
# python 3

# a list of tuples
t3 = [(3,8), (4,9), (2,1)]
print(t3[0])                           # (3,8)
print(t3[0][0])                        # 3

〔☛ Python: What's the Difference Between Tuple & List?

Python Sequence Types

In Python, {string, list, tuple} are called “sequence types”. They all have the same methods. Here's example of operations that can be used on sequence type.

# -*- coding: utf-8 -*-
# python 3

# operations on sequence types

# a list
ss = [0, 1, 2, 3]

# length
print(len(ss))                    # 4

# ith item
print(ss[0])                     # 0

# slice of items
print(ss[0:3])                   # [0, 1, 2]

# slice of items with jump step
print(ss[0:10:2])                # [0, 2]

# check if a element exist
print(3 in ss)                   # True. (or False)

# check if a element does NOT exist
print(3 not in ss)               # False

# concatenation
print(ss + ss)             # [0, 1, 2, 3, 0, 1, 2, 3]

# repeat
print(ss * 2)              # [0, 1, 2, 3, 0, 1, 2, 3]

# smallest item
print(min(ss))                   # 0

# largest item
print(max(ss))                   # 3

# index of the first occurence
print(ss.index(3))                       # 3

# total number of occurences
print(ss.count(3))                       # 1

Dictionary: Key/Value Pairs

A keyed list in Python is called “dictionary” (known as Hash Table or Associative List in other languages). It is a unordered list of pairs, each pair is a key and a value.

#-*- coding: utf-8 -*-
# python 3

# define a keyed list
aa = {"john":3, "mary":4, "jane":5, "vicky":7}
print(aa)

# getting value from a key
print("mary is:", aa["mary"])   # mary is: 4

# add a entry
aa["pretty"] = 99

# delete a entry
del aa["vicky"]

print(aa)            # {'jane': 5, 'john': 3, 'mary': 4, 'pretty': 99}

# get keys
print(list(aa.keys()))          # ['jane', 'john', 'mary', 'pretty']

# get values
print(list(aa.values()))        # [5, 3, 4, 99]

# check if a key exists
print("is mary there:", "mary" in aa) # output is mary there: True

Loop Thru List/Dictionary

Here is a example of going thru a list by element.

# -*- coding: utf-8 -*-
# python 3

myList = ['one', 'two', 'three', '∞']

for x in myList:
     print(x)

You can loop thru a list and get both {index, value} of a element. Example:

# -*- coding: utf-8 -*-
# python 3

myList = ['one', 'two', 'three', '∞']
for i, v in enumerate(myList):
     print(i, v)

# 0 one
# 1 two
# 2 three
# 3 ∞

Loop thru Dictionary

# -*- coding: utf-8 -*-
# python 3

myDict = {"john":3, 'mary':4, 'jane':5, 'vicky':7}

for k, v in list(myDict.items()):
     print(k, v)

# output

# jane 5
# john 3
# mary 4
# vicky 7

See also: Python, Ruby, Perl: Apply a Function to a List.

Using Library

A library in Python is called a module.

# -*- coding: utf-8 -*-
# python 3

# import the standard module named os
import os

# example of using a function
print('current dir is:', os.getcwd())
# -*- coding: utf-8 -*-
# python 3

import os

# print all names exported by the module
print(dir(os))

More: Python & Perl: Using Modules/Packages/Library.

Defining a Function

The following is a example of defining a function.

# -*- coding: utf-8 -*-
# python 3

def myFun(x,y):
     """myFun returns x+y."""
     result = x+y
     return result

print(myFun(3,4))               # prints 7

A string immediately following the function definition is the function's documentation.

A function can have optional parameters. If no argument is given, a default value is assumed. Example:

# -*- coding: utf-8 -*-
# python 3

def myFun(x, y=1):
    """myFun returns x+y.
    Parameter y is optional and default to 1"""
    return x+y

print(myFun(3))                 # output 4

For defining infinite number of parameters, or unspecified keyword parameters, see: Python, Ruby, Perl: Defining A Function.

Classes and Objects

Example:

# -*- coding: utf-8 -*-
# python 3

# in the following, we define a set of data and functions as a class, and name it xxx

class xxx:
     """A class extempore! =(^_^)="""

     i = 1                      # i'm a piece of data

     def ok(self):
         return "ok"

     def square(self, a):
         return a*a

# in the following, we create a object of the class xxx.  This is called “instantiating a class”.
x = xxx()

# Data or functions defined in a class are called the class's attributes or methods. To use them, append a dot and their name after the object's name.
print('value of attribute i is:', x.i)
print("3 squared is:", x.square(3))
print("ok called:", x.ok())

# In the definition of function inside a class, the first parameter “self” is necessary. It is just side-effect of the language design.

# The first line in the class definition is the class's documentation. It can be accessed thru the __doc__ attribute.
print("xxx's doc string is: %s" % x.__doc__)

# var inside the class can be change like this
x.i = 400
print(x.i)                      # output 400

# new data can be added to the class
x.j=4
print(x.j)                      # output 4

# A class's method can also be over-rided
x.square = 333

# (the following line will no longer work)
# x.square(3)

Writing a Module

Here's a basic example. Save the following line in a file and name it mymodule.py.

# -*- coding: utf-8 -*-
# python 3

def f1(n):
    return n+1

To load the file, use import import module name, then to call the function, use module name.function name. Example:

# -*- coding: utf-8 -*-
# python 3

import mymodule           # import the module

print(mymodule.f1(5))      # calling its function. prints 6
print(mymodule.__name__)   # list its functions and variables
blog comments powered by Disqus