2. Resources
• Learn Python The Hard Way, 2nd Edition
– http://bit.ly/python-lug (Free online)
– Paperback book costs $15.99
– http://learncodethehardway.org
• Google python class:
– http://code.google.com/edu/languages/google-
python-class/
• MIT Open courseware:
– http://academicearth.org/courses/introduction-to-
computer-science-and-programming
3. It’s Easy.
5 most important things:
– Do Not Copy-Paste
– Code
– Practice
– Practice
– Practice
4. Prerequisites
Python v2.5 +
python
Any text editor.
gEdit (Linux)
TextMate (OSX)
Settings
Tabs Width: 4
Insert spaces instead of tabs
Your Mind.
5. TODO: today
Total of 52 chapters
We will cover: 1-22, 28-35, 39-42
Basic constructs, data structures, OOP
Solve two simple python problems.
Homework: Another problem. What did you think?
7. But first……..Pip, pep8, iPython
• pip install simplejson
– For python packages in Python package index
• pep8 script.py
– Python style guide. Your best friend
• Python Easter egg
– import this
• Ipython
• Open pydocs :
docs.python.org/library/index.html
8. comments
Single line comments only
'#' (an octothorpe) notifies beginning
Ends with a newline
9. Printing statements
print is builtin function
Usage: print ”Hello, world!”
Appends a newline automatically
To avoid new line, use a comma (,)
Usage: print ”Hello”,
print ”roopesh”
10. Basic math
* / % + - < > <= >=
Same as C operator precedence
/ does a integer division
Example:
print "Hens", 25 + 30 / 6
print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
print "What is 5 - 7?", 5 – 7
print "Is it greater or equal?", 5 >= -2
11. More operators
• Basic ones: + - * / %
• Try:
– x // y
– abs(x)
– int(x), long(x), float(x)
– complex(re, im)
– c.conjugate()
– pow(x, y) or x ** y
12. variables
No need of types
Duck typing
cars = 100
space_in_car = 4.0
result = cars + space_in_car
cars_not_driven = cars
Can assign one var to another
Tip: type(cars)
13. Variables and printing
Can use placeholders in print statements
print ”let's talk about %s” % my_name
print "There are %d types of people." % 10
print "Those who know %s and those who %s." %
(binary, do_not)
Also can use names for placeholders
print ”my name is %(name)s” % {'name':
my_name}
14. Text (String)
There are 3 types of notation
Single quotes, double quotes, multiline text
Multiline text stores the text, whitespaces and escape
characters as well
val = ’hello world’
val = ”hello again!”
val = ”Hello n
World
!!”
val = ”””no need to ’escape’ anything – ”ok?” ”””
Interesting functions:
upper(), lower(), title(), swapcase(),strip()
15. Booleans
True and False
Can use in print with placeholders as well
Anything that has a value is true, anything like
0, zero length string, zero length list or dictionary
is false
val = ’Hi my friend’
if val:
print ”yo!”
If ’Hi’ in val:
print ’this keeps getting better!’
16. Input
There are two functions: input(), raw_input()
raw_input() contains string and input() could
contain object
first = raw_input("Please enter your age ")
second = input("Please enter your age again")
print "You said you are", first
print "Then you said you are", second
Try again, pass 40+2 in second
17. Working with python prog files
Any arguments passed to python prog files is
stored in argv
Zero based arguments, first one is always
script name
import sys
print sys.argv[0]
print sys.argv[1]
Run: python file.py 4
18. Working with files
open(filename, mode) : returns file handle
read() : to read the whole file
readline() and readlines(): to read each line
write(data) : writes to file
close() : to close the file handle
from sys import argv
script, filename = argv
txt = open(filename, 'r+') #r or w
print "Here's your script %r:" % script
print "Here's your file %r:" % filename
print txt.read()
txt.write('42')
txt.close()
19. functions
def keyword to declare a function
Arguments don't need function type
Can skip return value
No return implies it returns a None value
Always do: x is None and not, x == None
None is similar to null
To take unlimited number of arguments: use *arg
as argument, it is packing method for arguments
21. Logics
and, or, not, ==, !=, >, >=, <, <=
and returns last value which makes the
statement true
or returns first value which makes the
statement false
Both are short-circuit operator
test = True
result = test and 'Test is True' or 'Test is False'
23. Lists and loops
Lists: [1, 2, 3]
append(elem), extend(list), insert(idx, elem), rem
ove(x), pop(i), count(i), sort(), reverse(),len(l)
Tuples: (1, 2, 3)
Difference:
lists are mutable,
tuples are immutable
Ideally lists should have same data types
24. Lists and loops
for element in list:
print element
for i in range(i):
print i
for i, val in enumerate(list):
print i, val
sorted_list = sorted(list)
sort(list)
List comprehensions for ease of use (later..)
25. Lists and loops
Lists from strings:
a = ”A B C D E F”.split()
#['A', 'B', 'C', 'D', 'E', 'F’]
a.pop()
' '.join(a) #joins lists to form a string
List slicing: list[start:end]
a[0:len(a)]
a[:4]
a[3:]
a[-1]
26. Dictionaries
{'name': 'Roopesh’, ’age’ : 42}
Key-value pairs / lookup table
Can be accessed with a['name']
Can add new values with same syntax
a['city'] = 'San Jose'
Can remove an item with 'del'
del a['city']
Add a bunch using: dict.update(another_dict)
27. Classes and Objects
Class keyword, inherits from object
Constructor: def __init__
All methods take first arg as the instance of
class
Denoted with word 'self'
Any number of args have to follow self
def func(self, val)
28. Classes and Objects
Instantiating classes with ClassName() syntax
There is no 'new' keyword
Some examples in code given.
To override operators, override functions like
__eq__, __lt__, __gt__, __lte__ etc
29. Class example
class MyClass:
answer = 42
def a_method(self):
print “I am a method”
instance = MyClass ()
instance.a_method()
hasattr(MyClass, “answer”)
30. List comprehensions (bonus)
[each for each in range(100) if each % 2 == 0]
[some_func(each) for each in range(100)]
iter(list) produces a list iterator
Gives ability to get next item with
iterator.next()
When iterator gets exhausted, it produces
StopIteration exception
31. Handling Exceptions
Try:
… do some handling
except Error as e:
print e
finally:
… do some final clean up
32. Problem 1
Write a function char_freq() that takes a string
and builds a frequency listing of the characters
contained in it. Represent the frequency listing
as a Python dictionary.
Try it with something like
char_freq("abbabcbdbabdbdbabababcbcbab”)
33. Problem 2
In cryptography, a Caesar cipher is a very simple encryption techniques in which each
letter in the plain text is replaced by a letter some fixed number of positions down the
alphabet. For example, with a shift of 3, A would be replaced by D, B would become
E, and so on. The method is named after Julius Caesar, who used it to communicate
with his generals. ROT-13 ("rotate by 13 places") is a widely used example of a Caesar
cipher where the shift is 13. In Python, the key for ROT-13 may be represented by
means of the following dictionary:
key =
{'a':'n', 'b':'o', 'c':'p', 'd':'q', 'e':'r', 'f':'s', 'g':'t', 'h':'u', 'i':'v', 'j':'w', 'k':'x', 'l':'y', 'm':'z', 'n':'
a', 'o':'b', 'p':'c', 'q':'d', 'r':'e', 's':'f', 't':'g', 'u':'h', 'v':'i', 'w':'j', 'x':'k', 'y':'l', 'z':'m', 'A':'N', '
B':'O', 'C':'P', 'D':'Q', 'E':'R', 'F':'S', 'G':'T', 'H':'U', 'I':'V', 'J':'W', 'K':'X', 'L':'Y', 'M':'Z', 'N':'A'
, 'O':'B', 'P':'C', 'Q':'D', 'R':'E', 'S':'F', 'T':'G', 'U':'H', 'V':'I', 'W':'J', 'X':'K', 'Y':'L', 'Z':'M'}
Your task in this exercise is to implement an encoder/decoder of ROT-13. Once you're
done, you will be able to read the following secret message:
Pnrfne pvcure? V zhpu cersre Pnrfne fnynq!
35. Want more?
• Go here:
– 15 Exercises to Know A Programming Language:
Part 1
– http://www.knowing.net/index.php/2006/06/16/
15-exercises-to-know-a-programming-language-
part-1
36. A lot more…
List comprehensions, decorators, lambda
functions, effective unit tests, network and web
programming,
Some popular modules like
urlib, simplejson, ElementTree and lxml for xml
parsing, SQLAlchemy, sciPy, NumPy, mechanize
37. At the end……
“I'll say that learning to create software changes
you and makes you different. Not better or
worse, just different.”
“The world needs more weird people who know
how things work and who love to figure it all out.”
~ Zed Shaw
Source: http://learnpythonthehardway.org/book/advice.html