Xah Python Tutorial: Learn Python in 1 Hour

, , …,

This is a Python tutorial. Spend 3 hours, and you shoud have a basic understanding of the language.

Examples on this page are based on Python 2.7. For python 3, see: Python 3 Basics.

Strings

Strings are enclosed using 'single' quote or "double" quote.

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

a = "tiger"
b = 'rabbit' # single/double quotes are basically the same in Python
print a, b   # prints 「tiger rabbit」

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

Triple Quotes for Multi-Line String

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

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

print d

Quoting Raw String 「r"…"」

Add r in front of the string quote symbol for raw string. This way, backslash characters will NOT be interpreted as escapes. (“r” for “raw”)

c = r"this\n and that"
print c # prints a single line

For detail, see: Python: Quote String

Unicode in String or Source File

If anywhere in your source file contains Unicode characters, the first or second line should be:

# -*- coding: utf-8 -*-

Any string containing Unicode characters should have “u” prefix, ⁖ u"i ♥ cats".

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

a = u"I ♥ cats"     # string with unicode heart ♥

For detail, see: Python Unicode Tutorial 🐍.

substring, length

Substring extraction is done by appending a bracket [begin index:end index].

Index can be negative, which counts from the end.

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

b="01234567"

print b[1:4]  # 123
print b[1:-1] # 123456
print b[-2:-1] # 6

String length is len().

print len("abc") # 3

Join string: string + string.

print "abc" + " xyz"            # "abc xyz"

String can be repeated using *.

print "ab" * 3                 # "ababab"

〔➤ Python: String Methods

Arithmetic

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

print(3 + 4)           # 7
print(3 - 4)           # -1
print(3 + - 4)         # -1
print(3 * 4)           # 12
# -*- coding: utf-8 -*-
# python

print(11 / 5)          # 2 (quotient)
print(11 / 5.)         # 2.2 (force to float)
print(11 // 5)         # 2 (quotient)
print(11 % 5)          # 1 remainder (modulo)

print(divmod(11, 5))   # (2, 1) quotient and remainder
print(divmod(11.2, 5)) # (2.0, 1.1999) quotient and remainder
# -*- coding: utf-8 -*-
# python

print(2 ** 3)          # 8 , power
print(3**(1/2.))       # 1.73205080757, square root

In Python, power is **. The ^ is used for bitwise xor. 〔➤ Python 3: Operators

Warning: in Python 2, 11/5 returns 2, not 2.2. Use float 11/5..

For sine, cosine, log, …, see: 9.2. math — Mathematical functions — Python v2.7.6 documentation

Convert to {int, float, string}

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

Assignment Operators

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

# 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    Note: not 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 0, empty string, empty array, …, all evaluate to False.

The following evaluate to False:

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

my_thing = []

if my_thing:
    print "yes"
else:
    print "no"
# prints no

Conditional: if then else

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

x = -1
if x < 0:
    print 'neg'
#-*- coding: utf-8 -*-
# python

x = -1
if x < 0:
    print 'negative'
else:
    print '0 or positive'
#-*- coding: utf-8 -*-
# python

# 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

while loop.

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

x = 1
while x < 9:
    print x
    x += 1

for loop.

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

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

for x in a:
    print x

The range(m,n) function gives a list from m to n, not including n.

Python also supports break and continue to exit loop.

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

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

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].

# -*- coding: utf-8 -*-
a = [ "b0", "b1", "b2", "b3", "b4", "b5", "b6"]
print a[2:4]   # → ['b2', 'b3']

WARNING: The extraction does not include the element at the end index. For example, myList[2:4] returns only 2 elements, not 3.

Modify element: list[index] = new value

# -*- coding: utf-8 -*-

a = ["b0", "b1", "b2"]
a[2] = "two"
print a             # → ['b0', 'b1', '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

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.

# -*- coding: utf-8 -*-
bb = [3, 4, [7, 8]]
print bb         # [3, 4, [7, 8]]
print bb[2][1]   # 8

List Join. Lists can be joined with plus sign.

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

Tuple

Python has a “tuple” type. It's like list, except that that the elements cannot be changed, nor can new element added.

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

# tuple
t1 = (3, 4 , 5)                 # a tuple of 3 elements
print t1                        # (3, 4 , 5)
print t1[0]                     # 3

# nested tuple
t2 = ((3,8), (4,9), ("a", 5, 5))
print t2[0]                           # (3,8)
print t2[0][0]                        # 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”. Here's example of operations that can be used on sequence type.

# length
ss = [0, 1, 2, 3, 4, 5, 6]
print len(ss)                    # 7
# ith item
ss = [0, 1, 2, 3, 4, 5, 6]
print ss[0]                     # 0
# slice of items
ss = [0, 1, 2, 3, 4, 5, 6]
print ss[0:3]                   # [0, 1, 2]
# slice of items with jump step
ss = [0, 1, 2, 3, 4, 5, 6]
print ss[0:10:2]                # [0, 2, 4, 6]
# check if a element exist
ss = [0, 1, 2, 3, 4, 5, 6]
print 3 in ss                   # True. (or False)
# check if a element does NOT exist
ss = [0, 1, 2, 3, 4, 5, 6]
print 3 not in ss               # False
# concatenation
ss = [0, 1]
print ss + ss                   # [0, 1, 0, 1]
# repeat
ss = [0, 1]
print ss * 2              # [0, 1, 0, 1]
# smallest item
ss = [0, 1, 2, 3, 4, 5, 6]
print min(ss)                   # 0
# largest item
ss = [0, 1, 2, 3, 4, 5, 6]
print max(ss)                   # 6
# index of the first occurence
ss = [0, 1, 2, 3, 4, 5, 6]
print ss.index(3)                       # 3
# total number of occurences
ss = [0, 1, 2, 3, 4, 5, 6]
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

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

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

# add a entry
aa["pretty"] = 99
print "added pretty:", aa

# delete a entry
del aa["vicky"]
print "deleted vicky", aa

# get just the keys
print "just keys", aa.keys()
# to get just values, use “.values()”

# check if a key exists
print "is mary there:", aa.has_key("mary")

Loop Thru List/Dictionary

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

myList=['one', 'two', 'three', 'infinity']
for x in myList:
     print x

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

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

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

The following construct loops thru a dictionary, each time assigning both keys and values to variables.

myDict = {'john':3, 'mary':4, 'jane':5, 'vicky':7}
for k, v in myDict.iteritems():
     print k, ' is ', v

〔➤ Python: Map Function to List

Module & Package

A library in Python is called a module. A collection of module is called a package.

To load a module, call import module name. Then, to use a function in the module, use module name.function name(…).

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

# import the standard module named os
import os

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

import os

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

〔➤ Python: List Available Modules, Module Search Paths, Loaded Modules

Defining a Function

The following is a example of defining a function.

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

print myFun(3,4)    # 7

The string immediately following the first line is the function's documentation.

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

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

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

〔➤ Python: Function with Optional Parameter, Named Parameter, Infinite Parameters

Classes and Objects

Example:

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

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

class X1:           # by convention, class name starts with Cap letter
    """I'm a class extempore! =(^o^)=
    I do random things.
    """

    i = 1                      # a piece of data

    def f1(self):              # no args
        return "f1 called"

    def f2(self, a):
        return a+1

# create a object of the class X1. This is called “instantiating a class”.
x = X1()

# 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 # 1

print "f1 result is:", x.f1()   # "f1 called"

print "f2 result is:", x.f2(3)  # 4

# 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 "X1's doc string is:", x.__doc__

# var inside the class can be change like this
x.i = 400

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

# A class's method can also be overridden
x.f2 = 333

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

Writing a Module

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

def f3(n): return n+1

To load the file, use import import mm. To call the function, use mm.f3. Example:

import mm           # import the module
print mm.f3(5)      # calling its function. prints 6
print mm.__name__   # list its functions and variables

〔➤ Python: How to Write a Module

blog comments powered by Disqus