writing solid code introduction to python. program 1 python -c "print 'hello world'...

Post on 24-Dec-2015

236 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Writing Solid CodeWriting Solid CodeIntroduction to Python

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

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

Start an interactive session:◦python –v

help(command/expression)

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

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

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

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)

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.

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

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]

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.

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.

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.

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,'!']

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)

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)

Control FlowControl Flowif expression:

statement(s) elif expression:

statement(s) elif expression:

statement(s) ... else:

statement(s)

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"

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

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

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))

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

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

Calling External programsCalling External programsimport os

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

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

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

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

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

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)

PointersPointersLearn Python in 10 minutes:

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

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

top related