Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c...

29
Writing Solid Code Writing Solid Code Introduction to Python

Transcript of Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c...

Page 1: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Writing Solid CodeWriting Solid CodeIntroduction to Python

Page 2: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Program 1Program 1python -c "print 'Hello World' “

python -c "import time; print time.asctime()“

Start an interactive session:◦python –v

help(command/expression)

Page 3: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Unix Executable ScriptsUnix Executable ScriptsMost portable version:

◦#!/usr/bin/env python

$ cat first.py#!/usr/bin/env python

# A commentprint 'Hello World‘print 2**100

$ chmod a+x first.py

$ cat first.py#!/usr/bin/env python

# A commentprint 'Hello World‘print 2**100

$ chmod a+x first.py

$ ./first.pyHello World1267650600228229401496703205376

$ ./first.pyHello World1267650600228229401496703205376

Page 4: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Basic ElementsBasic ElementsKeywords: and assert break class

continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while with yield

Operators: + - * / % ** // << >> & | ^ ~ < <= > >= <> != ==

Delimiters: ( ) [ ] { } , : . ' = ; += -= *= /= //= %= &= |= ^= >>= <<= **=

Page 5: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Data TypesData TypesAll data values are objects

◦type(obj) returns the type.Numbers

◦Integer: 23, 027 (octal), 0xDA5 (hex)

◦Floating points : 1.00, 1.0e2◦Complex numbers: 5+6j

Page 6: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Data TypesData TypesSequences

◦Iterables: All sequences are iterable. (for)

◦Strings: Can use “” or ‘’ to specify. “abc” ‘abc’ (Same thing.)

Unmatched ones can occur within the string. “matt’s” Use triple double-quotes for multi-line strings or

strings than contain both ‘ and “ inside of them: “““a‘b“c”””

Many Methods built into the string, for example: “hello”.upper() gives ‘HELLO’

◦Tuples (x,y) (100,200,300)

Page 7: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

SequencesSequencesLists

◦[42, 3.14, ‘hello’]◦list(‘wow’) gives [‘w’,’o’,’w’]

Dictionaries ( key:value pairs ) uses Hash.

◦D = { ‘x’ : 42, ‘y’:3.14, ‘z’:7}◦{1:2 , 3:4}◦A single dictionary can store values

of different types◦D[‘x’] is 42.◦del D[‘x’] removes the key from D.

Page 8: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

SequencesSequencesConcatenation:

◦S1 + S2◦S1 * n gives n copies of S1 concatenated.

Membership◦x in S : tests to check whether x is in S.◦x not in S : Guess?◦For strings: x in S means if x is a substring

of SIndexing

◦x = [1,2,3,4] then x[1] is 2 and x[-1] is 4

Page 9: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

SequencesSequencesSlicing a sequence:

◦S[i:j]: from item i (included) to item j (excluded)

◦x = [1,2,3,4]◦x[1:3] # [2, 3] ◦x[1:] # [2, 3, 4] ◦x[:2] # [1, 2]

Page 10: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

List MethodsList MethodsMethod Description

Nonmutating methods  

L.count(x)Returns the number of items of L that are equal to x.

L.index(x)

Returns the index of the first occurrence of an item in L that is equal to x, or raises an exception if L has no such item.

Page 11: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

List MethodsList MethodsMutating methods  

L.append(x)Appends item x to the end of L ; e.g., L[len(L):]=[x].

L.extend(s)Appends all the items of iterable s to the end of L; e.g., L[len(L):]=s.

L.insert(i, x)

Inserts item x in L before the item at index i, moving following items of L (if any) "rightward" to make space (increases len(L) by one, does not replace any item, does not raise exceptions: acts just like L[i:i]=[x]).

L.remove(x)

Removes from L the first occurrence of an item in L that is equal to x, or raises an exception if L has no such item.

Page 12: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

List MethodsList MethodsMethod Description

L.pop([i])

Returns the value of the item at index i and removes it from L; if i is omitted, removes and returns the last item; raises an exception if L is empty or i is an invalid index in L.

L.reverse( )Reverses, in place, the items of L.

L.sort([f]) (2.3)

Sorts, in place, the items of L, comparing items pairwise via function f; if f is omitted, comparison is via the built-in function cmp.

L.sort(cmp=cmp, key=None, reverse=False)(2.4)

Sorts, in-place, the items of L, comparing items pairwise via the function passed as cmp (by default, the built-in function cmp). When argument key is not None, what gets compared for each item x is key(x), not x itself.

Page 13: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

List MethodsList Methods >>> a + [‘whites']

[‘blend','eggs‘,2,234,‘whites'] >>> a.append('!')

[‘blend','eggs‘,2,234,'!'] >>> 2*a

[‘blend','eggs',2,234,'!',‘blend','eggs',2,234,'!']

Page 14: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Dictionary MethodsDictionary MethodsNonmutating Methods

D.copy( )

Returns a shallow copy of the dictionary (a copy whose items are the same objects as D's, not copies thereof)

D.has_key(k)Returns TRue if k is a key in D; otherwise, returns False, just like k in D

D.items( )Returns a new list with all items (key/value pairs) in D

D.keys( )Returns a new list with all keys in D

D.values( )Returns a new list with all values in D

D.iteritems( )Returns an iterator on all items (key/value pairs) in D

D.iterkeys( )Returns an iterator on all keys in D

D.itervalues( )Returns an iterator on all values in D

D.get(k[, x])Returns D[k] if k is a key in D; otherwise, returns x (or None, if x is not given)

Page 15: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Dictionary MethodsDictionary MethodsMutating Methods

D.clear( )Removes all items from D, leaving D empty

D.update(D1)For each k in D1, sets D[k] equal to D1[k]

D.setdefault(k[, x])Returns D[k] if k is a key in D; otherwise, sets D[k] equal to x and returns x

D.pop(k[, x])

Removes and returns D[k] if k is a key in D; otherwise, returns x (or raises an exception if x is not given)

D.popitem( )Removes and returns an arbitrary item (key/value pair)

Page 16: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Control FlowControl Flowif expression:

statement(s) elif expression:

statement(s) elif expression:

statement(s) ... else:

statement(s)

Page 17: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Control FlowControl Flowif x < 0: print "x is negative" elif x % 2:

print "x is positive and odd" else:

print "x is even and non-negative"

Page 18: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Control Flow : whileControl Flow : while

x = 64

count = 0 while x > 0:

x = x // 2 # truncating division count += 1 print "The approximate log2 is", count # if count == 6: break

Page 19: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Control Flow : forControl Flow : for

for target in iterable:statement(s)

for letter in "ciao": if letter == ‘c’: continueprint "give me a", letter, "...“

for key, value in d.items( ): # cannot use iteritemsif not key or not value: # keep only true keys and values

del d[key]

for x in range(1,5):print x # output: 1 2 3 4

Page 20: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Sample CodeSample Code#!/usr/bin/env python

import string, sys

# If no arguments were given, print a helpful message if len(sys.argv)==1:

print 'Usage: celsius temp1 temp2 ...' sys.exit(0)

# Loop over the arguments for i in sys.argv[1:]:

fahrenheit=float(string.atoi(i)) celsius=(fahrenheit-32)*5.0/9.0 print '%i\260F = %i\260C' % (int(fahrenheit), int(celsius+.5))

Page 21: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

FunctionsFunctionsdef function-name(parameters):

statement(s)

def double(x):return x*2

Calling Functions in pythonfunction-object(arguments)

print double(432)

def f(x, y): x = 23 y.append(42)

a = 77 b = [99] f(a, b) print a, b

Page 22: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Import statementImport statementA Typical python program is made up

of several source files.Each source file corresponds to a

module.“import” keyword allows to include

other modules into a python program.

Modules◦sys: stdin, stderr, argv◦os: system, path◦string: split◦ re: match compile◦math: exp, sin, sqrt, pow

Page 23: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Calling External programsCalling External programsimport os

◦subprocess.Popen(["ls", "-la"]).wait()

Page 24: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Sample ProgramSample Program# average4.py# A program to average a set of numbers# Illustrates sentinel loop using empty string as sentinel

def main(): sum = 0.0 count = 0 xStr = raw_input("Enter a number (<Enter> to quit) >> ") while xStr != "": x = eval(xStr) sum = sum + x count = count + 1 xStr = raw_input("Enter a number (<Enter> to quit) >>

") print "\nThe average of the numbers is", sum / count

Page 25: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

OutputOutputEnter a number (<Enter> to quit) >> 34Enter a number (<Enter> to quit) >> 23Enter a number (<Enter> to quit) >> 0Enter a number (<Enter> to quit) >> -25Enter a number (<Enter> to quit) >> -34.4Enter a number (<Enter> to quit) >> 22.7Enter a number (<Enter> to quit) >>

The average of the numbers is 3.38333333333

Page 26: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Sample ProgramSample Program# average5.py# Computes the average of numbers listed in a file.

def main(): fileName = raw_input("What file are the numbers in? ")

infile = open(fileName,'r') sum = 0.0 count = 0 for line in infile.readlines(): sum = sum + eval(line) count = count + 1 print "\nThe average of the numbers is", sum / count

Page 27: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Sample ProgramSample Program# average6.py# Computes the average of numbers listed in a file.

def main(): fileName = raw_input("What file are the numbers in? ")

infile = open(fileName,'r') sum = 0.0 count = 0 line = infile.readline() while line != "": sum = sum + eval(line) count = count + 1 line = infile.readline() print "\nThe average of the numbers is", sum / count

Page 28: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

Assignment for todayAssignment for todayImplement:

closest_pair([(0,0),(7,6),(2,20),(12,5),(16,16),(5,8),(19,7),(14,22),(8,19),(7,29),(10,11),(1,13)])

returns: (7,6),(5,8)

Should run in O(nlogn)

Page 29: Writing Solid Code Introduction to Python. Program 1 python -c "print 'Hello World' “ python -c "import time; print time.asctime()“ Start an interactive.

PointersPointersLearn Python in 10 minutes:

◦http://www.poromenos.org/tutorials/python

Dive into Python◦http://www.diveintopython.org/