Upgrade to Pro — share decks privately, control downloads, hide ads and more …

90分钟:Python

Zoom.Quiet
December 04, 2013

 90分钟:Python

Larry cai

Zoom.Quiet

December 04, 2013
Tweet

More Decks by Zoom.Quiet

Other Decks in Programming

Transcript

  1.  What is python ? Why Python ?  Exercise

    1: Hello World  Exercise 2: String, List via command line  Exercise 3: For loop with if..else..  Exercise 4: Learn how to use module json to dump data  Exercise 5: Generate online NASDAQ data using json !!! Lots of materials are copied from http://www.cs.columbia.edu/~hgs/teaching/ap/slides/python.ppt and which is based on official tutorial by Guido van Rossum Exercises are created by Larry Cai Python in 90 minutes 2
  2. What is Python ? And Why Python 2.7  Python

    is an easy to learn, powerful script programming language  Python is mature and better community compare to Perl  Python is high level over shell script  Python is well supported in OS as default compare to Ruby (which is also nice)  Python 3.x is quite new, not well accepted  Welcome to Python world Python in 90 minutes 3
  3.  Python 2.7.x In Windows with Git Bash  http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi

     Add into Path  How to run ?  /usr/local/bin/python  #!/usr/bin/env python  interactive use Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>  $ python script.py Python in 90 minutes 4
  4.  Hello World  hello.py #!/usr/bin/env python for name in

    [“larry”,”cai”]: print "hello" , name Python in 90 minutes 5
  5. Basic operations & program  Assignment:  size = 40

     a = b = c = 3  Numbers  integer, float  complex numbers: 1j+3, abs(z)  Strings  'hello world', 'it\'s hot'  "bye world"  continuation via \ or use """ long text """" a,b = 0, 1 # non-zero = true while b < 10: # formatted output, without \n print b, # multiple assignment a,b = b, a+b Python forces to use a certain Python forces to use a certain indentation style instead of “{,}” indentation style instead of “{,}” Python in 90 minutes 6
  6. String & List operations  concatenate with + or neighbors

     word = 'Help' + x  word = 'Help' 'a'  subscripting of strings  'Hello'[2]  'l'  slice: 'Hello'[1:2]  'el'  word[-1]  last character  len(word)  5  immutable: cannot assign to subscript  lists can be heterogeneous  a = ['spam', 'eggs', 100, 1234, 2*2]  Lists can be indexed and sliced:  a[0]  spam  a[:2]  ['spam', 'eggs']  Lists can be manipulated  a[2] = a[2] + 23  a[0:2] = [1,12]  a[0:0] = []  len(a)  5 Python in 90 minutes 7
  7. Exercise 2: remove characters  Practices basic operation in Interactive

    Shell  Add features to remove two characters each from input  ./hello2.py -m larry,cai hello rry hello i Hints: name Hints: names = message.split(“,”) s = message.split(“,”) Python in 90 minutes 9
  8. Control flow: if & for x = int(raw_input("Please enter #:"))

    if x < 0: x = 0 print 'Negative changed to zero' elif x == 0: print 'Zero' elif x == 1: print 'Single' else: print 'More'  no case statement a = ['cat', 'window', 'defenestrate'] for x in a: print x, len(x)  no arithmetic progression, but  range(10)  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  for i in range(len(a)): print i, a[i]  do not modify the sequence being iterated over Python in 90 minutes 10
  9. Loops: break, continue, else, o nothing  break and continue

    like C  else after loop exhaustion for n in range(2,10): for x in range(2,n): if n % x == 0: print n, 'equals', x, '*', n/x break else: # loop fell through without finding a factor print n, 'is prime'  pass does nothing  syntactic filler while 1: pass Python in 90 minutes 11
  10. Exercise 3: for loop with if..else..  ./hello2.py -m larry,cai,in,github

    1. hello Larry 2. hello Cai 3. @ 4. hello Github Hints: think about loop in clean way Hints: think about loop in clean way Python in 90 minutes 12
  11. Defining functions def fib(n): """Print a Fibonacci series up to

    n.""" a, b = 0, 1 while b < n: print b, a, b = b, a+b >>> fib(2000)  First line is docstring  first look for variables in local, then global  need global to assign global variables def ask_ok(prompt, retries=4, complaint='Yes or no, please!'): while 1: ok = raw_input(prompt) if ok in ('y', 'ye', 'yes'): return 1 if ok in ('n', 'no'): return 0 retries = retries - 1 if retries < 0: raise IOError, 'refusenik error' print complaint >>> ask_ok('Really?') Python in 90 minutes 13
  12. Modules  import module: import fibo  Use modules via

    "name space": >>> fibo.fib(1000) >>> fibo.__name__ 'fibo'  can give it a local name: >>> fib = fibo.fib >>> fib(500)  function definition + executable statements  executed only when module is imported  modules have private symbol tables  avoids name clash for global variables  accessible as module.globalname  can import into name space: >>> from fibo import fib, fib2 >>> fib(500)  can import all names defined by module: >>> from fibo import * Python in 90 minutes 14
  13. Exercise 4: write into json config file  JSON (JavaScript

    Object Notation) dump list of the messages into external config files  ./hello2.py -m larry,cai,in,github > config.json  $ cat config.json [ “larry”, “cai”, “in”, “github” ] Hints: json.dumps(data, indent=2) Hints: json.dumps(data, indent=2) Python in 90 minutes 15
  14. Tuples and sequences  lists, strings, tuples: examples of sequence

    type  tuple = values separated by commas >>> t = 123, 543, 'bar' >>> t[0] 123 >>> t (123, 543, 'bar')  Tuples may be nested >>> u = t, (1,2) >>> u ((123, 542, 'bar'), (1,2))  Empty tuples: () >>> empty = () >>> len(empty) 0  sequence unpacking  distribute elements across variables >>> t = 123, 543, 'bar' >>> x, y, z = t >>> x 123  packing always creates tuple  unpacking works for any sequence Python in 90 minutes 16
  15. Dictionaries  like Tcl or awk associative arrays  indexed

    by keys  keys are any immutable type: e.g., tuples  but not lists (mutable!)  uses 'key: value' notation >>> tel = {'hgs' : 7042, 'lennox': 7018} >>> tel['cs'] = 7000 >>> tel  no particular order  delete elements with del >>> del tel['foo']  keys() method  unsorted list of keys >>> tel.keys() ['cs', 'lennox', 'hgs']  use has_key() to check for existence >>> tel.has_key('foo') 0 Python in 90 minutes 17
  16. Exercise 5: Generate report from internet  Print MSFT, GOOG

    stock via Nasdaq live JSON with sort  ./hello2.py –s MSFT,GOOG “Getting live data from NASDAQ @ <current time> GOOG: xx MSFT: xx $ curl -x <proxy> "http://finance.google.com/finance/info?client=ig&q=NASDAQ:MSFT,NASDAQ:GOOG “ fl = urlopen (“link”,"r") data = json.load(fl) [ { "id": "694653" ,"t" : "GOOG" ,"e" : "NASDAQ" ,"l" : "701.96" ,"l_cur" : "701.96" ,"s": "0" ,"ltt":"4:00PM EST" ,"lt" : "Dec 14, 4:00PM EST" ,"c" : "-0.74" ,"cp" : "-0.10" ,"ccol" : "chr" } ] Hints: urlopen -> json.load -> data .. Hints: urlopen -> json.load -> data .. Python in 90 minutes 18
  17.  Automate your daily work in python scripts  Keep

    coding in python !!!  Reading books and sample codes !! Python in 90 minutes 19
  18.  Slides:  http://www.slideshare.net/doughellmann/an-introduction-to-the-zen- - Doug Hellmann  http://www.cs.columbia.edu/~hgs/teaching/ap/slides/python.ppt 

    List books, articles, and electronic sources  http://docs.python.org/2.7/  Python cheatsheet: http://www.addedbytes.com/cheat-sheets/python-cheat-sheet/ Python in 90 minutes 20