Python in 90mins

21
Larry cai <[email protected]>

description

learn python with exercise in 90 minutes

Transcript of Python in 90mins

Page 1: Python in 90mins

Larry cai <[email protected]>

Page 2: Python in 90mins

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 minutes2

Page 3: Python in 90mins

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 worldPython in 90 minutes3

Page 4: Python in 90mins

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 minutes4

Page 5: Python in 90mins

Hello World

hello.py#!/usr/bin/env pythonfor name in [“larry”,”cai”]: print "hello" , name

Python in 90 minutes5

Page 6: Python in 90mins

Tips: Indent is important for python Visible symbol in your favorite editor

Python in 90 minutes6

Python forces to use a certain Python forces to use a certain indentation style instead of “{,}” indentation style instead of “{,}”

Page 7: Python in 90mins

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 in 90 minutes7

Page 8: Python in 90mins

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 minutes8

Page 9: Python in 90mins

Learn the standard script sample

https://gist.github.com/4308811

Help doc

Import library

Function

Main func

Start here !

Python in 90 minutes9

Page 10: Python in 90mins

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 rryhello i

Hints: nameHints: names = messages.split(“,”)s = messages.split(“,”)

Python in 90 minutes10

Page 11: Python in 90mins

Control flow: if & forx = 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 minutes11

Page 12: Python in 90mins

Loops: break, continue, else, o nothing break and continue

like C else after loop

exhaustionfor 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 fillerwhile 1:

pass

Python in 90 minutes12

Page 13: Python in 90mins

Exercise 3: for loop with if..else.. ./hello2.py -m larry,cai,in,github

1. hello Larry2. hello Cai3. @4. hello Github

Hints: think about loop in clean wayHints: think about loop in clean way

Python in 90 minutes13

Page 14: Python in 90mins

Defining functionsdef 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 minutes14

Page 15: Python in 90mins

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 minutes15

Page 16: Python in 90mins

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 minutes16

Page 17: Python in 90mins

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 minutes17

Page 18: Python in 90mins

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 minutes18

Page 19: Python in 90mins

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: xxMSFT: xx

$ curl -x <proxy> "http://finance.google.com/finance/info?client=ig&q=NASDAQ:MSFT,NASDAQ:GOOG “fl = urlopen (“link”)data = json.loads(contents)

[{"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 minutes19

Page 20: Python in 90mins

Automate your daily work in python scripts

Keep coding in python !!! Reading books and sample codes !!

Python in 90 minutes20

Page 21: Python in 90mins

Slides: http://www.slideshare.net/doughellmann/an-

introduction-to-the-zen-of-python - 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/

Example for last exercise http://digitalpbk.com/stock/google-finance-get-stock-quote-realtime

Python in 90 minutes21