Python Workshop - Learn Python the Hard Way
Upcoming SlideShare
Loading in...5
×
 

Python Workshop - Learn Python the Hard Way

on

  • 2,264 views

The contents of this PPT

The contents of this PPT

Statistics

Views

Total Views
2,264
Views on SlideShare
2,225
Embed Views
39

Actions

Likes
0
Downloads
46
Comments
0

2 Embeds 39

http://lug-sjsu.org 38
http://www.slashdocs.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • http://guide.python-distribute.org/installation.html
  • Chart: http://literacy.kent.edu/Minigrants/Cinci/romanchart.htm

Python Workshop - Learn Python the Hard Way Python Workshop - Learn Python the Hard Way Presentation Transcript

  • Learn Python The Hard Way Utkarsh Sengar Contents taken from © Copyright 2010, Zed A. Shaw.
  • 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
  • It’s Easy. 5 most important things: – Do Not Copy-Paste – Code – Practice – Practice – Practice View slide
  • Prerequisites Python v2.5 +  python Any text editor.  gEdit (Linux)  TextMate (OSX) Settings  Tabs Width: 4  Insert spaces instead of tabs Your Mind. View slide
  • 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?
  • Lets code….. etherPadhttp://ip-address:9001
  • 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
  • comments Single line comments only # (an octothorpe) notifies beginning Ends with a newline
  • 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”
  • 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
  • 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
  • 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)
  • Variables and printing Can use placeholders in print statements  print ”lets 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}
  • 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()
  • 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!’
  • 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
  • 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
  • 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 "Heres your script %r:" % script print "Heres your file %r:" % filename print txt.read() txt.write(42) txt.close()
  • functions def keyword to declare a function Arguments dont 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
  • functions cont… def print_none():pass def print_one(arg1): print ”got one arg: %s” % arg1 def print_two(arg1, arg2): print ”got two args: %s, %s” %(arg1, arg2) def print_two_2(*args): print args return args
  • 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
  • Data Structures List: [1, 2, 3, 2] Tuples: (1, 2, 3, 2) Set: {1,2,3} Dictionary: {’name’ : ’utkarsh’, ’age’ : 42}
  • 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
  • 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..)
  • 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]
  • 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)
  • 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)
  • 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
  • Class exampleclass MyClass: answer = 42 def a_method(self): print “I am a method”instance = MyClass ()instance.a_method()hasattr(MyClass, “answer”)
  • 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
  • Handling ExceptionsTry: … do some handlingexcept Error as e: print efinally: … do some final clean up
  • Problem 1Write a function char_freq() that takes a stringand builds a frequency listing of the characterscontained in it. Represent the frequency listingas a Python dictionary.Try it with something likechar_freq("abbabcbdbabdbdbabababcbcbab”)
  • Problem 2In cryptography, a Caesar cipher is a very simple encryption techniques in which eachletter in the plain text is replaced by a letter some fixed number of positions down thealphabet. For example, with a shift of 3, A would be replaced by D, B would becomeE, and so on. The method is named after Julius Caesar, who used it to communicatewith his generals. ROT-13 ("rotate by 13 places") is a widely used example of a Caesarcipher where the shift is 13. In Python, the key for ROT-13 may be represented bymeans 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 youredone, you will be able to read the following secret message:Pnrfne pvcure? V zhpu cersre Pnrfne fnynq!
  • Homework Integer to Romannumerals converter
  • 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
  • A lot more… List comprehensions, decorators, lambdafunctions, effective unit tests, network and web programming, Some popular modules likeurlib, simplejson, ElementTree and lxml for xmlparsing, SQLAlchemy, sciPy, NumPy, mechanize
  • At the end……“Ill say that learning to create software changesyou and makes you different. Not better orworse, just different.”“The world needs more weird people who knowhow things work and who love to figure it all out.” ~ Zed ShawSource: http://learnpythonthehardway.org/book/advice.html