Movatterモバイル変換


[0]ホーム

URL:


Mosky Liu, profile picture
Uploaded byMosky Liu
PDF, PPTX8,321 views

Programming with Python - Basic

s[:] makes a copy.– s[:]– slice(0, 3)– s[slice(0, 3)]– s[0:3]– s[:3]– s[3:]– s[:-3]So slice is more flexible.– s[start:stop:step]– s[::-1] # reverse– help(slice)– s = 'Hello World'– s[5:11:2]– 'oWl'– s[::2]– 'Hlo rd'– s[-

Embed presentation

Download as PDF, PPTX
Programming with Python        Basic Topics          Mosky                          1
Mosky:●   The examples and the PDF version are available at:    –   j.mp/mosky-programming-with-python.●   It is welcome to give me any advice of this slide or    ask me the answers of the challenges.    –   mosky.tw                                                           2
Mosky●   Projects               ●   Pinkoi staff                               pinkoi.com    –   MoSQL        mosql.mosky.tw    –   Clime              ●   PyCon JP '12 Speaker        clime.mosky.tw                               pycon.jp    –   Apt-Pool        Apt-Add                           ●   PyCon TW '12 Speaker                               pycon.tw        …                                                      3
Advertisement●   PyCon Taiwan 2013               ●   COSCUP 2013    –   pycon.tw                        –   coscup.org    –   5/25-26 @ Sinica                                        –   8/3-4 @ TICC                                        –   coscup-gereral@googlegroups.co    –   pythontw@googlegroups.com           m                                                                             4
Topics●   Basic Topics            ●   Adv. Topics    –   Python 2 or 3?          –   Module and Package    –   Environment             –   Typing    –   hello.py                –   Comprehension    –   Common Types            –   Functional Technique    –   Flow Control            –   Object-oriented Prog.    –   File I/O                –   Useful Libraries    –   Documentation       ●   Final Project    –   Scope                   –   A Blog System                                                            5
An InvestigationDo you know _________ ?–   any other programming language–   Object-oriented–   Static Typing; Strong and Weak Typing–   Dynamic Typing–   Functor; Closure–   Functional Programming–   Web development                                            6
Python 2 or 3?    in short.                 7
Python 2 or 3?●   Python 2.x                                                 ●   Python 3.x    –   status quo                                                 –   present & future    –   2.7 is end-of-life release                                 –   under active development    –   harder for newcomers                                       –   easier for newcomers    –   more third-party lib.                                      –   less third-party lib.    –   2to3.py                                                    –   3to2.py    –   backported features:                                       –   new features:         ●   What's News in Python 2.6                                  ●   What's News in Python 3.0             docs.python.org/release/2.6.4/whatsnew/2.6.html                docs.python.org/py3k/whatsnew/3.0.html         ●   What's News in Python 2.7             docs.python.org/dev/whatsnew/2.7.html                                                                                                                     8
Python 2 or 3? (cont.)●   Use Python 3 if you can.●   Decide Python 2 or 3 by the libraries you will use.●   Today, we will go ahead with Python 2.    And introduce you to the changes in Python3.                                                          9
EnvironmentIs a python in your computer?                                10
On Linux or Mac●   Python is built-in on Linux or Mac.●   All you have to do is check the version.    Type "python" in any terminal.    Python 2.7.3 (default, Sep 26 2012, 21:51:14)    [GCC 4.7.2] on linux2    Type "help", "copyright", "credits" or "license"    for more information.    >>>                                                       11
On Windows●   Download the installer from:    "http://python.org/download"●   Install it.●   Add the Python's PATH.    –   Computer → System Properties → Advanced system        settings → Advanced tab → Environment Variables →        System Variables → find PATH.    –   "...;C:Python27"                                                            12
Editor / IDE●   The Editors                    ●   The IDE    –   Sublime Text 2                 –   IDLE        www.sublimetext.com                                            ●   Debian-base:    –   VIM                                     sudo apt-get install idle        wiki.python.org/moin/Vim            ●   Windows:    –   Gnome Text Editor                       Use the Start Menu to        (gedit)                                 search "IDLE"    –   Notepad++                                   ●   The others:        notepad-plus-plus.org          –   wiki.python.org/moin/PythonEditors    –   ...                                                                                13
The Python Shell●   Type "python" in terminal.    –   >>>    –   ...●   Leaving a shell:    –   exit()    –   Linux or Mac: Ctrl+D    –   Windows: Ctrl+Z<Enter>                                     14
The python Command●   Enter Python shell without arguments.●   python hello.py●   python -c 'print "Hello, World!"'●   python -m SimpleHTTPServer                                            15
hello.pySay hello to Python.                       16
hello.py#!/usr/bin/env python                                  ●   #! the shebang.# -*- coding: utf-8 -*-           ●   # -*- defines the encoding# file: hello.py                      of this file.                                  ●   # means the comments.def hello(name=None):   if name:n                     ●   : starts a block.        return 'Hello, %s!' %name   else:                          ●   A block uses 4-space indent.        return 'Hello, Python!'   ●   A statement ends with n.                                                                     17
hello.py (cont.)if __name__ == '__main__':                             ●   __name__, the name of                                 module.    import sys    if len(sys.argv) >= 2:   ●   import is important.        print                    The usage:hello(sys.argv[1])    else:                             ●   import sys        print hello()        ●   from sys import argv                             ●   … as alias                                                         18
19
The print Statementprint   'End with a new line char.'print   'Print', 'multiple', 'strings.'print   'End with a space.',print   # print a new line char                                          20
The print function in Python 3print('End with a new line   char.')print('Print', 'multiple',   'strings.')print('End with a space.',   end=' ')print() # print a new line   charprint('End with a space.', end='')print('a', 'b', 'c', seq=',')                                           21
Common TypesWithout it we can do noting                              22
Common Types●   Numeric                   ●   Sequence    –   Integer 100               –   String ""    –   Float 10.0                –   Unicode u""    –   Long 100L                 –   List [,]    –   Complex 1+1j              –   Tuple (,)    –   Boolean True, False                                                    23
Common Types (cont.)●   Mapping    –   Dictionary {:}●   Set    –   Set {,}    –   Frozen Set        forzenset(...)                                         24
Integer, Float and Long●   3+3                ●   divmod(5, 2)                           → tuple (not numeric)●   3-3                ●   5/2●   3*3                    → int (truncated)                           5.0/2    3/3                       ●●                           → float●   6/2*(1+2)              (as double in C)                       ●   5.0//2    → int                  → float (floored)    (as long in C)     ●   2**1000                           → long (∞ precision)                                                   25
Integer and Float in Python 3●   3+3               ●   divmod(5, 2)                          → tuple (not numeric)●   3-3               ●   5/2●   3*3                   → float                          5.0/2    3/3                      ●●                          → float●   6/2*(1+2)             (as double in C)                      ●   5.0//2    → int                 → float (floored)    (∞ precision)     ●   2**1000                          → int (∞ precision)                                                  26
Note: The Variables●   x = 1              ●   x < y●   x + 1                  → True    → 2●   y = 2              ●   bin(y)●   x + y                  → '0b101'    → 3                ●   bin(y | 0b011)    y += 3                           → '0b111'●    → 5                                            27
A Trap of the Integer●   weight = 49●   height = 163●   bmi = weight / (height / 100) ** 2●   bmi    → 49●   (height / 100)    → 1                                         28
A Trap of the Integer (cont.)●   weight = 49.0●   height = 163.0●   bmi = weight / (height / 100) ** 2●   bmi    → 18.442545824080696                                         29
Complex●   1j * 1J                ●   a = 3.0+4.0j●   1j * complex(0,1)                           ●   float(a)                               → TypeError●   3 + 1j*3               ●   a.real●   (3+1j)*3                   → 3.0●   (1+2j)/(1+1j)          ●   a.imag    → complex                  → 4.0                           ●   abs(a)                               # = sqrt(a.real**2 +                               a.imag**2)                               → 5                                                      30
Boolean●   not False            Comparison:●   True and True        –   10 < 100●   False or True        –   10 < 10.0                         –   10 <= 10.0                         –   10 == 10.0●   False +1    → 1                         –   10 != 10.0                         –   x is y●   True +1    → 2                                          31
String and Unicode'...' is equal to "..."      Functions                             –   ord( 'A')String (immutable seq.)      –   chr(65)–     ' 中文 '                 –   ord(u' 中 ')–     ' 嗨, nPython ! '      –   unichr(20013); chr(20013)–   r' 嗨, nPython ! '       Decoding (String → Unicode)                             –    ' 中文 '.decode('utf-8')–    ''' ... '''                             –   unicode( ' 中文 ', 'utf-8')Unicode (immutable seq.)                             Encoding (Unicode → String)–   u' 嗨, nPython ! '       –   u' 中文 '.encode('utf-8')–   ur' 嗨, nPython ! '      –   str(u' 中文 ')–    u''' ... '''            –   str(u' 中文 ', 'utf-8')                                                             32
Bytes and String in Python 3'...' is equal to "..."   Functions                          –   ord(b'A')Bytes (immutable seq.)    –   chr(65)–   b' 中文 '               –   ord( ' 中 ')–   b' 嗨, nPython ! '    –   unichr(20013); chr(20013)–   br' 嗨, nPython ! '   Decoding (Bytes → String)                          –   b' 中文 '.decode('utf-8')–    b''' ... '''                          –   str(b' 中文 ', 'utf-8')String (immutable seq.)                          Encoding (String → Bytes)–     ' 嗨, nPython ! '   –    ' 中文 '.encode('utf-8')–   r' 嗨, nPython ! '    –   bytes( ' 中文 ')–    ''' ... '''          –   bytes( ' 中文 ', 'utf-8')                                                          33
Unicode Does Matter!●   b = ' 中文 '●   len(b)    → 6●   len(b.decode('utf-8'))    → 2                                  34
String and Unicode (cont.)●   They have a lot of methods:    capitalize center count decode encode endswith    expandtabs find rfind format index rindex isalnum    isalpha isdigit islower isspace istitle isupper    join ljust rjust lower partition rpartition    replace split rsplit splitlines startswith rstrip    strip lstrip swapcase title translate upper zfill●   ref:    docs.python.org/2/library/stdtypes.html#string-methods                                                             35
String and Unicode (cont.)String formatting:–   % (modulo)     ●   ref: docs.python.org/2/library/stdtypes.html#string-formatting-operations–   str.format     ●   ref: docs.python.org/2/library/string.html#formatstrings                                                                                     36
List and TupleList (mutable seq.)          Tuple (seq.)–   []                       –   tuple()–   ['item']                 –   ('item', )–   ['s', 100, u'unicode']   –   ('s', 100, u'unicode')–   list('abc')              –   tuple('abc')–   'a b c'.split(' ')–   'n'.join(['spam',       –   'n'.join(('spam',    'eggs'])                     'eggs'))–   x, y = [1, 2]            –   x, y = (1, 2)–   x, y = [y, x]            –   x, y = (y, x)                                                          37
SequenceSequence                    Mutable Seq.                            –   s[i] = x–   x in s # performance?   –   s[i:j] = t–   x not in s              –   del s[i:j]–   s + t                   –   s[i:j:k] = t–   s * n, n * s            –   s.append(x)                            –   s.insert(i, x)–   s[i]                    –   s.pop([i])–   s[i:j]                  –   s.remove(x) # performance?–   s[i:j:k]                –   s.extend(t)                                in-place–   len(s)                            –   s.sort([cmp[, key[, reverse]]])–   s.index(x)              –   s.sort([key[, reverse]]) # Py 3–   s.count(x)              –   s.reverse()                                                                  38
Sequence Comparison●   (0, 0, 0) < (0, 0, 1)●   [0, 0, 0] < [0, 0, 1]●   (0, ) < (0, 0)●   'ABC' < 'C' < 'Pascal' < 'Python'●   (1, 2, 3) == (1.0, 2.0, 3.0)●   'A' == 'A'●   'A' > 65●   'A' > 66●   ('A', ) > (66, )                                        39
Sequence Comparison in Python 3●   (0, 0, 0) < (0, 0, 1)●   [0, 0, 0] < [0, 0, 1]●   (0, ) < (0, 0)●   'ABC' < 'C' < 'Pascal' < 'Python'●   (1, 2, 3) == (1.0, 2.0, 3.0)●   'A' == 'A'●   'A' > 65 → TypeError●   'A' > 66 → TypeError●   ('A', ) > (66, ) → TypeError                                        40
Sequence (cont.)Slicing and Slice object:–   s = range(10)           –   s = 'I am a str.'–   t = s                   –   s[:-3]–   t[0] = 'A'–   print s                 –   s.reverse()–   t is s                      → TypeError                            –   s[::-1]–   t = s[:]                –   ''.join(reversed(s))–   t is s                            –   slice(None, None, -1)                                                        41
MappingDict. (mutable map.)                                –   len(d)–   {}                                –   d[k]–   {'A ': 1, 'B': 2, 'C': 3}   –   d[k] = v–   dict({...})                 –   del d[k]–   dict(A=1, B=2, C=3)         –   k in d, k not in d                                –   d.copy()                                –   d.get(key[, default])–   k = 'ABC'                   –   d.setdefault(key[, default])–   v = [1, 2, 3]               –   d.items(), d.keys(), d.values()–   pairs = zip(k, v)           –   d.pop(key[, default)–   dict(pairs)                 –   d.update([other])                                    ...                                                                      42
SetSet (mutable set)                                  –   len(s)–   set()                         –   x in s, x not in s–   {'A', 'B', 'C'} # Py3         –   s.copy()                                  –   s.add(elem)–   set('ABC')                    –   s.discard(elem)–   set(['A','B','C'])            –   s.pop()                                  –   s |= other                                  –   s &= other                                  –   s | other | ...                                  –   s & other & ...                                  –   s < | <= | == | > = | > other                                      ...                                                                      43
Flow Controlin Python is grace and easy to learn.                                        44
The if Statementif [condition 1]:    …elif [condition 2]:    …elif [condition 3]:    …else:    …[exp. if true] if [condition] else [exp. if false]                                                     45
Truth Value TestingThey are same as False in a boolean context:–   None–   False–   Zeros (ex. 0, 0.0, 0L, 0j)–   Empty containers (ex. '', [], {})–   __nonzero__() or __len__() returns 0 or False                                                    46
Truth Value Testing (cont.)●   if   not None: ...●   if   not []: ...●   if   [0]: ...●   if   [[]]: ...●   if   "": ...●   if   {}: ...●   if   not {0: False}: …    …                                         47
The for Statementfor [item] in [iterable]: for i in [0, 1, 2]:    …                         print ifor i in range(3):      for i in xrange(3):    print i                 print i                                                48
The for Statement in Python 3for [item] in [iterable]: for i in [0, 1, 2]:    …                         print ifor i in range(3):      for i in xrange(3):    print i                 print i                                                49
The for Statement (cont.)for i in range(1, 3): for i in range(3, -1, -1):    print i               print is = [1, 2, 3]            s = [...]t = 'xyz'                for i, item in enumerate(s):                             print i, itemfor i, j in zip(s, t):    print i, j                                                        50
The for Statement (cont.)●   It is like for … each in other language.    –   Note: Python hasn't other for loop.●   It can iterate all of iterable object.    –   In other words, the object which defined __iter__.    –   ex. sequence, mapping, set, ...                                                             51
Challenge 1: A Pyramid●   Use for loop to build a               *    pyramid on right.                    ***    –   without limit.                  *****    –   limit: in two lines            *******         ●   hint: string formatting                                                 52
Challenge 2-1: Count the Chars●   Use for loop to count    "Please count the    the sentence on right.   characters here."    –   without limit.    –   limit: without if         ●   hint: use get                             {'P': 1, ...}                                                 53
Challenge 2-2: Collect the Chars●   Use for loop to collect "Here are UPPERCASE    the chars.              and lowercase chars."    –   limit: use setdefault                                {'c': ['C', 'c',                                'c'], ...}                                                    54
The while Statementtasks = [...]while tasks:                  while 1:    …                             …●   It leaves the loop once   ●   A infinite loop.    the tasks is empty.       ●   It is better to use block                                  mechanism in a loop.                                  –   ex. I/O block                                                              55
The break, continue Statementloop …:                     loop …:    if …: break                 if …: continue●   It terminates a loop.   ●   It continues with the                                next iteration.                                                        56
The break, continue Statement (cont.)●   They do the same thing in both C and Python.●   Using break or continue is encouraged.    –   take the place of the complicated condition in a while.    –   faster, because Python is interpreted.●   Just use them.                                                                  57
The pass Statement●   Do nothing.                                       58
The else Clause on Loops       loop …:           …       else:           …●   No a clause on the if statement!●   If the loop isn't broken by any break statement, the    else block is executed.●   It replaces the flags we usually used.                                                           59
Challenge 3-1: The Primes●   Try to filter the primes     [2,   3, 5, 7, 11, 13,    from [2, 100).               17,   19, 23, 29, 31,                                 37,   41, 43, 47, 53,    –   without limit.           59,   61, 67, 71, 73,    –   limit: use loop's else   79,   83, 89, 97]                                                          60
The try Statementtry:    …except LookupError, e:    …except (IndexError, KeyError), e:    …else:    …finally:    …                                    61
The try Statement in Python 3try:    …except LookupError as e:    …except (IndexError, KeyError) as e:    …else:    …finally:    …                                      62
The try Statement (cont.)●   For avoiding to catch the exception we don't expect, you should:    –   reduce your code in try block.        ●           move them to else block.    –   make the exception precise in except statement.        ●   Avoid using Exception.        ●   ref: docs.python.org/2/library/exceptions.html#exception-hierarchy●   Release the resource in finally block.    –   or use context manager    – ex. file, socket, …●   raise SomeError                                                                                 63
The def Statementdef f(x, y):            def f(x, y=2):    return (x, y)           return (x, y)f(1, 2)                 f(1)f(y=2, x=1)             f(x=1)f(*(1, 2))              f(*(1, ))f(**{'y': 2, 'x': 1})   f(**{'x': 1})                                            64
The def Statement (cont.)def f(*args):                 def f(**kargs):    return args                   return kargsf(1, 2, 3)                    # f(1, 2) # → TypeError                              f(x=1, y=2, z=3)# f(y=2, x=1) # → TypeError                              # f(*(1, 2)) # → TypeErrorf(*(1, 2, 3, 4))              f(**{'x': 1, 'y': 2, 'z': 3})# f(**{'y': 2 ,'x': 1})# → TypeError                                                              65
The def Statement (cont.)def f(x, *args):              def f(x, **kargs):    return x, args                return kargsf(1, 2, 3)                    # f(1, 2) # → TypeError                              f(x=1, y=2, z=3)# f(y=2, x=1) # → TypeError                              # f(*(1, 2)) # → TypeErrorf(*(1, 2, 3, 4))              f(**{'x': 1, 'y': 2, 'z': 3})# f(**{'y': 2, 'x': 1})# → TypeError                                                              66
The def Statement (cont.)def f(*args, y):     def f(*args, **kargs):    return kargs         return args, kargs→ SyntaxError        f(1, 2, 3)                     f(y=2, x=1)                     f(*(1, 2, 3, 4))                     f(**{'y': 2, 'x': 1})                                              67
The def Statement in Python 3def f(*args, k):              def f(*args, k, **kargs):    return kargs                  return args, kargsF(1, 2, 3)                    f(1, 2, 3)# f(x=1, k=2) # → TypeError   f(x=1, k=2)f(*(1, 2, 3, 4))                              f(*(1, 2, 3, 4))# f(**{'x': 1, 'k': 2})# → TypeError                 f(**{'x': 1, 'k': 2})                                                          68
The def Statement (cont.)        def f(): pass        def g(): pass        d = {'x': f, 'y': g}        d['x']()●   Python functions are first-class functions.    –   It means you can pass functions as arguments, and        assign functions to variables.    –   It is like the function pointers in C.                                                            69
An Example of Using while, try and def.# file: ex_try.py                                  $ python ex_try.pydef take_int(prompt='Give me a int: '):                                                   Give me a int: str    while 1:        try:                                                   It is not a int!             user_input = int(raw_input(prompt))   Give me a int: abc        except ValueError, e:             print 'It is not a int!'              It is not a int!        else:             return user_input                     Give me a int: 100if __name__ == '__main__':                                                   I got a int from user:    x = take_int()                                 100    print 'I got a int from user: %d' % x                                                   $                                                                      70
A Trap of the Default Value# file: ex_defval_trap.py      ●   Because the list is                                   created when thedef f(items=[]):                   function is defined.    items.append(1)    return items                               ●   Avoid to use the                                   mutable types as theif __name__ == '__main__':         default value.    print f() # -> [1]    print f() # -> [1, 1]    print f() # -> [1, 1, 1]                                                          71
Challenge 4: A BMI Calculator●   BMI: Body Mass Index                  Enter your height (M):    –   BMI = weight (KG) ÷ height (M)2   1.63    –   < 18.5 → Underweight                                          Enter your weight (KG):    –   [18.5, 25) → Normal weight    –   [25, 30) → Overweight             49    –   >= 30 → Obesity                   ---●   Write a BMI calculator.                                          Your BMI is:    –   without limit.    –   limit: only one if                                          18.44 (Underweight)         ●   hint: use loop               Ideal weight is between:                                          49.15 ~ 66.42                                                                     72
File I/OOpen anything with the open.                               73
The file Objectf = open('input.txt')   f =print f.read()          open('output.txt',                        'w')f.seek(0)                        f.write('a line.n')for line in f:                        f.close()    print line,f.close()                                               74
The Context Manager        with open('input.txt') as f:            for line in f:                print line,        f.close()●   Python 2.5↑    –   Python 2.5.x: from __future__ import with_statement    –   Python 2.6↑: It is mandatory.                                                              75
Challenge 2: Count the Chars (cont.)–   limit 3: with the files   The path of input:                              input.txt                              The path of output:                              output.txt                              ---                              The result was                              written.                                                    76
The csv Moudle#!/usr/bin/env python           1, apple# -*- coding: utf-8 -*-         2, orange# file: ex_csv.py                                3, watermelonimport csv                                ['1', ' apple']with open('ex_csv.csv') as f:                                ['2', ' orange']    for row in csv.reader(f):        print row               ['3', ' watermelon']                                                       77
The os.path Moudle# file: ex_os_path.py                                $ python ex_os_path.pyfrom os import walkfrom os.path import join                                                     It requires a path asdef list_files(path):    paths = []                                                     argument.    for root, dir_names, file_names in walk(path):        for file_name in file_names:            paths.append(join(root, file_name))                                                     $ python ex_os_path.py .    return paths                                                     …/1if __name__ == '__main__':   import sys                                                     …/b/4   from os.path import abspath, dirname   if len(sys.argv) == 2:                                                     …/a/2       path = abspath(dirname(sys.argv[1]))       for path in list_files(path):                 …/a/3           print path   else:       print 'It requires a path as argument.'                                                                                78
DocumentationThe documentation is everywhere.                                   79
The help Function●   In Python shell:           ●   In terminal:    –   help(open)                 –   $ pydoc SimpleHTTPServer    –   dir(open)                  –   $ pydoc csv                                   –   $ pydoc os.path    –   'n'.join(dir(open))                                                                  80
Your Documentation                                    $ pydoc ex_doc# file: ex_doc.py                   Help on module ex_doc:'''module-level doc.'''             NAME                                           ex_doc - module-level doc.def f(x):                           FILE    '''A short sentence describesthis function.                      /home/mosky/programming-with-python/ex_doc.py                                    FUNCTIONS    About the parameters, return        f(x)value or any other detail ...                A short sentence describes this    '''                             function.    pass                                            About the parameters, return value or                                    any other detail ...                                                                                    81
ScopeWhere is the x?                  82
Scope# file: ex_scope.py            $ python ex_scope.py                               globalx = 'global'                               localdef f():                               $    if 1:         x = 'local'    return x                               ●   Scopes are decided by                                   functions.if __name__ == '__main__':    print x    print f()                                                           83
The LEGB Rule# file: ex_LEGB.py                             ●   return …global_var = 100                                   –   Local (in function)def f():    enclosed_var = 10                                                   –   Enclosed    def g():                                                   –   Global        local_var = 1        return sum([local_var, enclosed_var,                                                   –   Built-inglobal_var])    return g()if __name__ == '__main__':    print f() # -> 111                                                                             84
Challenge 3-2: The Primes (cont.)–   limit 1: Sieve of   [2,   3, 5, 7, 11, 13,    Eratosthenes.       17,   19, 23, 29, 31,–   limit 2: use set.   37,   41, 43, 47, 53,                        59,   61, 67, 71, 73,                        79,   83, 89, 97]                                                 85
Challenge 5: Mix All●   You have many             $ python mix.py pyramid 10    functions now.            …                              $ python mix.py primes 100    Try to write a CLI                              …    program to trigger your                              $ python mix.py bmi 1.63 49    functions.                              …    –   without limit                              $ python mix.py blah blah    –   limit: without if.    Please check your args.                                                            86
Adv. TopicsThere is another slide.                          87

Recommended

PDF
Programming with Python - Adv.
PPTX
Learn python – for beginners
PDF
Python Workshop
PDF
Python Programming - XIII. GUI Programming
PDF
Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...
PPT
Introduction to Python
PDF
Python Workshop
PDF
The Benefits of Type Hints
PDF
Open source projects with python
PDF
Python tutorial
PDF
Python Foundation – A programmer's introduction to Python concepts & style
PPT
Python ppt
PDF
Introduction to Programming in Go
PDF
Python Tutorial
PPT
Python - Introduction
PDF
Python final ppt
ODP
Python Presentation
PDF
Chapter 0 Python Overview (Python Programming Lecture)
PDF
Python - the basics
PDF
Introduction to go language programming
PPTX
Python basics
PDF
Introduction To Python | Edureka
PPTX
What is Python? An overview of Python for science.
PDF
Writing Fast Code (JP) - PyCon JP 2015
PPTX
Go Language Hands-on Workshop Material
PDF
Graph-Tool in Practice
PDF
Socket Programming In Python
 
PDF
Learning Python from Data

More Related Content

PDF
Programming with Python - Adv.
PPTX
Learn python – for beginners
PDF
Python Workshop
PDF
Python Programming - XIII. GUI Programming
PDF
Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...
PPT
Introduction to Python
PDF
Python Workshop
PDF
The Benefits of Type Hints
Programming with Python - Adv.
Learn python – for beginners
Python Workshop
Python Programming - XIII. GUI Programming
Advanced Python Tutorial | Learn Advanced Python Concepts | Python Programmin...
Introduction to Python
Python Workshop
The Benefits of Type Hints

What's hot

PDF
Open source projects with python
PDF
Python tutorial
PDF
Python Foundation – A programmer's introduction to Python concepts & style
PPT
Python ppt
PDF
Introduction to Programming in Go
PDF
Python Tutorial
PPT
Python - Introduction
PDF
Python final ppt
ODP
Python Presentation
PDF
Chapter 0 Python Overview (Python Programming Lecture)
PDF
Python - the basics
PDF
Introduction to go language programming
PPTX
Python basics
PDF
Introduction To Python | Edureka
PPTX
What is Python? An overview of Python for science.
PDF
Writing Fast Code (JP) - PyCon JP 2015
PPTX
Go Language Hands-on Workshop Material
Open source projects with python
Python tutorial
Python Foundation – A programmer's introduction to Python concepts & style
Python ppt
Introduction to Programming in Go
Python Tutorial
Python - Introduction
Python final ppt
Python Presentation
Chapter 0 Python Overview (Python Programming Lecture)
Python - the basics
Introduction to go language programming
Python basics
Introduction To Python | Edureka
What is Python? An overview of Python for science.
Writing Fast Code (JP) - PyCon JP 2015
Go Language Hands-on Workshop Material

Viewers also liked

PDF
Graph-Tool in Practice
PDF
Socket Programming In Python
 
PDF
Learning Python from Data
PDF
Concurrency in Python
PDF
Learn 90% of Python in 90 Minutes
PPSX
Programming with Python
PDF
Programming with Python and PostgreSQL
PDF
Functional programming in Python
PPTX
Working With WordPress Widgets
PDF
ZIPCodeTW: Find Taiwan ZIP Code by Address Fuzzily
PDF
Learning Git with Workflows
PDF
Introduction to Clime
PDF
Golang #5: To Go or not to Go
PDF
Minimal MVC in JavaScript
PDF
Beyond the Style Guides
PPTX
Golang iran - tutorial go programming language - Preliminary
PDF
Boost Maintainability
PDF
Automating and Accelerating Application Deployments to IBM WebSphere without ...
Graph-Tool in Practice
Socket Programming In Python
 
Learning Python from Data
Concurrency in Python
Learn 90% of Python in 90 Minutes
Programming with Python
Programming with Python and PostgreSQL
Functional programming in Python
Working With WordPress Widgets
ZIPCodeTW: Find Taiwan ZIP Code by Address Fuzzily
Learning Git with Workflows
Introduction to Clime
Golang #5: To Go or not to Go
Minimal MVC in JavaScript
Beyond the Style Guides
Golang iran - tutorial go programming language - Preliminary
Boost Maintainability
Automating and Accelerating Application Deployments to IBM WebSphere without ...

Similar to Programming with Python - Basic

PDF
05 python.pdf
PDF
PyCon Taiwan 2013 Tutorial
PDF
Unit 1-Part-1-Introduction to Python.pdf
ODP
Beginning python programming
PDF
[FREE PDF sample] Programming Python with CD 2nd Edition Mark Lutz ebooks
PDF
Introduction to python 3
PPTX
4_Introduction to Python Programming.pptx
PDF
Get Programming Python with CD 2nd Edition Mark Lutz free all chapters
PDF
Web Programming UNIT VIII notes
PDF
Python Programming Part 1.pdf
PDF
Python for Linux System Administration
 
PDF
Python Programming Part 1.pdf
PDF
Intro to Python Workshop San Diego, CA (January 19, 2013)
ODP
An Intro to Python in 30 minutes
ODP
Learn python
PDF
What is Python? (Silicon Valley CodeCamp 2014)
PDF
Anton Kasyanov, Introduction to Python, Lecture1
PPTX
Overview of python misec - 2-2012
PPTX
a9855c3532e13484ee6a39ba30218896d7c0d863-1676987272842.pptx
PDF
Python Intro
05 python.pdf
PyCon Taiwan 2013 Tutorial
Unit 1-Part-1-Introduction to Python.pdf
Beginning python programming
[FREE PDF sample] Programming Python with CD 2nd Edition Mark Lutz ebooks
Introduction to python 3
4_Introduction to Python Programming.pptx
Get Programming Python with CD 2nd Edition Mark Lutz free all chapters
Web Programming UNIT VIII notes
Python Programming Part 1.pdf
Python for Linux System Administration
 
Python Programming Part 1.pdf
Intro to Python Workshop San Diego, CA (January 19, 2013)
An Intro to Python in 30 minutes
Learn python
What is Python? (Silicon Valley CodeCamp 2014)
Anton Kasyanov, Introduction to Python, Lecture1
Overview of python misec - 2-2012
a9855c3532e13484ee6a39ba30218896d7c0d863-1676987272842.pptx
Python Intro

More from Mosky Liu

PDF
Data Science With Python
PDF
Hypothesis Testing With Python
PDF
Simple Belief - Mosky @ TEDxNTUST 2015
PDF
Statistical Regression With Python
PDF
Practicing Python 3
PDF
Dive into Pinkoi 2013
PDF
Elegant concurrency
PDF
MoSQL: More than SQL, but less than ORM
PDF
MoSQL: More than SQL, but Less than ORM @ PyCon APAC 2013
Data Science With Python
Hypothesis Testing With Python
Simple Belief - Mosky @ TEDxNTUST 2015
Statistical Regression With Python
Practicing Python 3
Dive into Pinkoi 2013
Elegant concurrency
MoSQL: More than SQL, but less than ORM
MoSQL: More than SQL, but Less than ORM @ PyCon APAC 2013

Recently uploaded

PPTX
NSF Converter Software to Convert NSF to PST, EML, MSG
PDF
How Does AI Improve Location-Based Mobile App Development for Businesses.pdf
PDF
What Is A Woman (WIAW) Token – Smart Contract Security Audit Report by EtherA...
PPTX
Binance Smart Chain Development Guide.pptx
PPTX
Application Security – Static Application Security Testing (SAST)
PPTX
Lecture 3 - Scheduling - Operating System
PPTX
Managed Splunk Partner vs In-House: Cost, Risk & Value Comparison
PDF
Why Zoho Notebook’s AI-Fueled Upgrade Matters for Knowledge Workers in 2026
PDF
API_SECURITY CONSULTANCY SERVICES IN USA
PDF
Combinatorial Interview Problems with Backtracking Solutions - From Imperativ...
PPTX
Magnet-AXIOM_overview_tool_cyber_tool.pptx
PDF
Virtual Study Circles Innovative Ways to Collaborate Online.pdf
PPTX
Why Your Business Needs Snowflake Consulting_ From Data Silos to AI-Ready Cloud
 
PDF
Database Management Systems(DBMS):UNIT-I Introduction to Database(DBMS) BCA S...
PDF
Cybersecurity Alert- What Organisations Must Watch Out For This Christmas Fes...
PDF
Resource-Levelled Critical-Path Analysis Balancing Time, Cost and Constraints
PDF
KoderXpert – Odoo, Web & AI Solutions for Growing Businesses
PDF
Database Management Systems(DBMS):UNIT-II Relational Data Model BCA SEP SEM ...
PDF
Intelligent CRM for Insurance Brokers: Managing Clients with Precision
PPTX
AI Clinic Management Software for Otolaryngology Clinics Bringing Precision, ...
NSF Converter Software to Convert NSF to PST, EML, MSG
How Does AI Improve Location-Based Mobile App Development for Businesses.pdf
What Is A Woman (WIAW) Token – Smart Contract Security Audit Report by EtherA...
Binance Smart Chain Development Guide.pptx
Application Security – Static Application Security Testing (SAST)
Lecture 3 - Scheduling - Operating System
Managed Splunk Partner vs In-House: Cost, Risk & Value Comparison
Why Zoho Notebook’s AI-Fueled Upgrade Matters for Knowledge Workers in 2026
API_SECURITY CONSULTANCY SERVICES IN USA
Combinatorial Interview Problems with Backtracking Solutions - From Imperativ...
Magnet-AXIOM_overview_tool_cyber_tool.pptx
Virtual Study Circles Innovative Ways to Collaborate Online.pdf
Why Your Business Needs Snowflake Consulting_ From Data Silos to AI-Ready Cloud
 
Database Management Systems(DBMS):UNIT-I Introduction to Database(DBMS) BCA S...
Cybersecurity Alert- What Organisations Must Watch Out For This Christmas Fes...
Resource-Levelled Critical-Path Analysis Balancing Time, Cost and Constraints
KoderXpert – Odoo, Web & AI Solutions for Growing Businesses
Database Management Systems(DBMS):UNIT-II Relational Data Model BCA SEP SEM ...
Intelligent CRM for Insurance Brokers: Managing Clients with Precision
AI Clinic Management Software for Otolaryngology Clinics Bringing Precision, ...

Programming with Python - Basic

  • 1.
    Programming with Python Basic Topics Mosky 1
  • 2.
    Mosky:●The examples and the PDF version are available at: – j.mp/mosky-programming-with-python.● It is welcome to give me any advice of this slide or ask me the answers of the challenges. – mosky.tw 2
  • 3.
    Mosky●Projects ● Pinkoi staff pinkoi.com – MoSQL mosql.mosky.tw – Clime ● PyCon JP '12 Speaker clime.mosky.tw pycon.jp – Apt-Pool Apt-Add ● PyCon TW '12 Speaker pycon.tw … 3
  • 4.
    Advertisement●PyCon Taiwan 2013 ● COSCUP 2013 – pycon.tw – coscup.org – 5/25-26 @ Sinica – 8/3-4 @ TICC – coscup-gereral@googlegroups.co – pythontw@googlegroups.com m 4
  • 5.
    Topics●Basic Topics ● Adv. Topics – Python 2 or 3? – Module and Package – Environment – Typing – hello.py – Comprehension – Common Types – Functional Technique – Flow Control – Object-oriented Prog. – File I/O – Useful Libraries – Documentation ● Final Project – Scope – A Blog System 5
  • 6.
    An InvestigationDo youknow _________ ?– any other programming language– Object-oriented– Static Typing; Strong and Weak Typing– Dynamic Typing– Functor; Closure– Functional Programming– Web development 6
  • 7.
    Python 2 or3? in short. 7
  • 8.
    Python 2 or3?● Python 2.x ● Python 3.x – status quo – present & future – 2.7 is end-of-life release – under active development – harder for newcomers – easier for newcomers – more third-party lib. – less third-party lib. – 2to3.py – 3to2.py – backported features: – new features: ● What's News in Python 2.6 ● What's News in Python 3.0 docs.python.org/release/2.6.4/whatsnew/2.6.html docs.python.org/py3k/whatsnew/3.0.html ● What's News in Python 2.7 docs.python.org/dev/whatsnew/2.7.html 8
  • 9.
    Python 2 or3? (cont.)● Use Python 3 if you can.● Decide Python 2 or 3 by the libraries you will use.● Today, we will go ahead with Python 2. And introduce you to the changes in Python3. 9
  • 10.
    EnvironmentIs a pythonin your computer? 10
  • 11.
    On Linux orMac● Python is built-in on Linux or Mac.● All you have to do is check the version. Type "python" in any terminal. Python 2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 11
  • 12.
    On Windows● Download the installer from: "http://python.org/download"● Install it.● Add the Python's PATH. – Computer → System Properties → Advanced system settings → Advanced tab → Environment Variables → System Variables → find PATH. – "...;C:Python27" 12
  • 13.
    Editor / IDE● The Editors ● The IDE – Sublime Text 2 – IDLE www.sublimetext.com ● Debian-base: – VIM sudo apt-get install idle wiki.python.org/moin/Vim ● Windows: – Gnome Text Editor Use the Start Menu to (gedit) search "IDLE" – Notepad++ ● The others: notepad-plus-plus.org – wiki.python.org/moin/PythonEditors – ... 13
  • 14.
    The Python Shell● Type "python" in terminal. – >>> – ...● Leaving a shell: – exit() – Linux or Mac: Ctrl+D – Windows: Ctrl+Z<Enter> 14
  • 15.
    The python Command● Enter Python shell without arguments.● python hello.py● python -c 'print "Hello, World!"'● python -m SimpleHTTPServer 15
  • 16.
  • 17.
    hello.py#!/usr/bin/env python ● #! the shebang.# -*- coding: utf-8 -*- ● # -*- defines the encoding# file: hello.py of this file. ● # means the comments.def hello(name=None): if name:n ● : starts a block. return 'Hello, %s!' %name else: ● A block uses 4-space indent. return 'Hello, Python!' ● A statement ends with n. 17
  • 18.
    hello.py (cont.)if __name__== '__main__': ● __name__, the name of module. import sys if len(sys.argv) >= 2: ● import is important. print The usage:hello(sys.argv[1]) else: ● import sys print hello() ● from sys import argv ● … as alias 18
  • 19.
  • 20.
    The print Statementprint 'End with a new line char.'print 'Print', 'multiple', 'strings.'print 'End with a space.',print # print a new line char 20
  • 21.
    The print functionin Python 3print('End with a new line char.')print('Print', 'multiple', 'strings.')print('End with a space.', end=' ')print() # print a new line charprint('End with a space.', end='')print('a', 'b', 'c', seq=',') 21
  • 22.
    Common TypesWithout itwe can do noting 22
  • 23.
    Common Types● Numeric ● Sequence – Integer 100 – String "" – Float 10.0 – Unicode u"" – Long 100L – List [,] – Complex 1+1j – Tuple (,) – Boolean True, False 23
  • 24.
    Common Types (cont.)● Mapping – Dictionary {:}● Set – Set {,} – Frozen Set forzenset(...) 24
  • 25.
    Integer, Float andLong● 3+3 ● divmod(5, 2) → tuple (not numeric)● 3-3 ● 5/2● 3*3 → int (truncated) 5.0/2 3/3 ●● → float● 6/2*(1+2) (as double in C) ● 5.0//2 → int → float (floored) (as long in C) ● 2**1000 → long (∞ precision) 25
  • 26.
    Integer and Floatin Python 3● 3+3 ● divmod(5, 2) → tuple (not numeric)● 3-3 ● 5/2● 3*3 → float 5.0/2 3/3 ●● → float● 6/2*(1+2) (as double in C) ● 5.0//2 → int → float (floored) (∞ precision) ● 2**1000 → int (∞ precision) 26
  • 27.
    Note: The Variables● x = 1 ● x < y● x + 1 → True → 2● y = 2 ● bin(y)● x + y → '0b101' → 3 ● bin(y | 0b011) y += 3 → '0b111'● → 5 27
  • 28.
    A Trap ofthe Integer● weight = 49● height = 163● bmi = weight / (height / 100) ** 2● bmi → 49● (height / 100) → 1 28
  • 29.
    A Trap ofthe Integer (cont.)● weight = 49.0● height = 163.0● bmi = weight / (height / 100) ** 2● bmi → 18.442545824080696 29
  • 30.
    Complex●1j * 1J ● a = 3.0+4.0j● 1j * complex(0,1) ● float(a) → TypeError● 3 + 1j*3 ● a.real● (3+1j)*3 → 3.0● (1+2j)/(1+1j) ● a.imag → complex → 4.0 ● abs(a) # = sqrt(a.real**2 + a.imag**2) → 5 30
  • 31.
    Boolean●not False Comparison:● True and True – 10 < 100● False or True – 10 < 10.0 – 10 <= 10.0 – 10 == 10.0● False +1 → 1 – 10 != 10.0 – x is y● True +1 → 2 31
  • 32.
    String and Unicode'...'is equal to "..." Functions – ord( 'A')String (immutable seq.) – chr(65)– ' 中文 ' – ord(u' 中 ')– ' 嗨, nPython ! ' – unichr(20013); chr(20013)– r' 嗨, nPython ! ' Decoding (String → Unicode) – ' 中文 '.decode('utf-8')– ''' ... ''' – unicode( ' 中文 ', 'utf-8')Unicode (immutable seq.) Encoding (Unicode → String)– u' 嗨, nPython ! ' – u' 中文 '.encode('utf-8')– ur' 嗨, nPython ! ' – str(u' 中文 ')– u''' ... ''' – str(u' 中文 ', 'utf-8') 32
  • 33.
    Bytes and Stringin Python 3'...' is equal to "..." Functions – ord(b'A')Bytes (immutable seq.) – chr(65)– b' 中文 ' – ord( ' 中 ')– b' 嗨, nPython ! ' – unichr(20013); chr(20013)– br' 嗨, nPython ! ' Decoding (Bytes → String) – b' 中文 '.decode('utf-8')– b''' ... ''' – str(b' 中文 ', 'utf-8')String (immutable seq.) Encoding (String → Bytes)– ' 嗨, nPython ! ' – ' 中文 '.encode('utf-8')– r' 嗨, nPython ! ' – bytes( ' 中文 ')– ''' ... ''' – bytes( ' 中文 ', 'utf-8') 33
  • 34.
    Unicode Does Matter!● b = ' 中文 '● len(b) → 6● len(b.decode('utf-8')) → 2 34
  • 35.
    String and Unicode(cont.)● They have a lot of methods: capitalize center count decode encode endswith expandtabs find rfind format index rindex isalnum isalpha isdigit islower isspace istitle isupper join ljust rjust lower partition rpartition replace split rsplit splitlines startswith rstrip strip lstrip swapcase title translate upper zfill● ref: docs.python.org/2/library/stdtypes.html#string-methods 35
  • 36.
    String and Unicode(cont.)String formatting:– % (modulo) ● ref: docs.python.org/2/library/stdtypes.html#string-formatting-operations– str.format ● ref: docs.python.org/2/library/string.html#formatstrings 36
  • 37.
    List and TupleList(mutable seq.) Tuple (seq.)– [] – tuple()– ['item'] – ('item', )– ['s', 100, u'unicode'] – ('s', 100, u'unicode')– list('abc') – tuple('abc')– 'a b c'.split(' ')– 'n'.join(['spam', – 'n'.join(('spam', 'eggs']) 'eggs'))– x, y = [1, 2] – x, y = (1, 2)– x, y = [y, x] – x, y = (y, x) 37
  • 38.
    SequenceSequence Mutable Seq. – s[i] = x– x in s # performance? – s[i:j] = t– x not in s – del s[i:j]– s + t – s[i:j:k] = t– s * n, n * s – s.append(x) – s.insert(i, x)– s[i] – s.pop([i])– s[i:j] – s.remove(x) # performance?– s[i:j:k] – s.extend(t) in-place– len(s) – s.sort([cmp[, key[, reverse]]])– s.index(x) – s.sort([key[, reverse]]) # Py 3– s.count(x) – s.reverse() 38
  • 39.
    Sequence Comparison● (0, 0, 0) < (0, 0, 1)● [0, 0, 0] < [0, 0, 1]● (0, ) < (0, 0)● 'ABC' < 'C' < 'Pascal' < 'Python'● (1, 2, 3) == (1.0, 2.0, 3.0)● 'A' == 'A'● 'A' > 65● 'A' > 66● ('A', ) > (66, ) 39
  • 40.
    Sequence Comparison inPython 3● (0, 0, 0) < (0, 0, 1)● [0, 0, 0] < [0, 0, 1]● (0, ) < (0, 0)● 'ABC' < 'C' < 'Pascal' < 'Python'● (1, 2, 3) == (1.0, 2.0, 3.0)● 'A' == 'A'● 'A' > 65 → TypeError● 'A' > 66 → TypeError● ('A', ) > (66, ) → TypeError 40
  • 41.
    Sequence (cont.)Slicing andSlice object:– s = range(10) – s = 'I am a str.'– t = s – s[:-3]– t[0] = 'A'– print s – s.reverse()– t is s → TypeError – s[::-1]– t = s[:] – ''.join(reversed(s))– t is s – slice(None, None, -1) 41
  • 42.
    MappingDict. (mutable map.) – len(d)– {} – d[k]– {'A ': 1, 'B': 2, 'C': 3} – d[k] = v– dict({...}) – del d[k]– dict(A=1, B=2, C=3) – k in d, k not in d – d.copy() – d.get(key[, default])– k = 'ABC' – d.setdefault(key[, default])– v = [1, 2, 3] – d.items(), d.keys(), d.values()– pairs = zip(k, v) – d.pop(key[, default)– dict(pairs) – d.update([other]) ... 42
  • 43.
    SetSet (mutable set) – len(s)– set() – x in s, x not in s– {'A', 'B', 'C'} # Py3 – s.copy() – s.add(elem)– set('ABC') – s.discard(elem)– set(['A','B','C']) – s.pop() – s |= other – s &= other – s | other | ... – s & other & ... – s < | <= | == | > = | > other ... 43
  • 44.
    Flow Controlin Pythonis grace and easy to learn. 44
  • 45.
    The if Statementif[condition 1]: …elif [condition 2]: …elif [condition 3]: …else: …[exp. if true] if [condition] else [exp. if false] 45
  • 46.
    Truth Value TestingTheyare same as False in a boolean context:– None– False– Zeros (ex. 0, 0.0, 0L, 0j)– Empty containers (ex. '', [], {})– __nonzero__() or __len__() returns 0 or False 46
  • 47.
    Truth Value Testing(cont.)● if not None: ...● if not []: ...● if [0]: ...● if [[]]: ...● if "": ...● if {}: ...● if not {0: False}: … … 47
  • 48.
    The for Statementfor[item] in [iterable]: for i in [0, 1, 2]: … print ifor i in range(3): for i in xrange(3): print i print i 48
  • 49.
    The for Statementin Python 3for [item] in [iterable]: for i in [0, 1, 2]: … print ifor i in range(3): for i in xrange(3): print i print i 49
  • 50.
    The for Statement(cont.)for i in range(1, 3): for i in range(3, -1, -1): print i print is = [1, 2, 3] s = [...]t = 'xyz' for i, item in enumerate(s): print i, itemfor i, j in zip(s, t): print i, j 50
  • 51.
    The for Statement(cont.)● It is like for … each in other language. – Note: Python hasn't other for loop.● It can iterate all of iterable object. – In other words, the object which defined __iter__. – ex. sequence, mapping, set, ... 51
  • 52.
    Challenge 1: APyramid● Use for loop to build a * pyramid on right. *** – without limit. ***** – limit: in two lines ******* ● hint: string formatting 52
  • 53.
    Challenge 2-1: Countthe Chars● Use for loop to count "Please count the the sentence on right. characters here." – without limit. – limit: without if ● hint: use get {'P': 1, ...} 53
  • 54.
    Challenge 2-2: Collectthe Chars● Use for loop to collect "Here are UPPERCASE the chars. and lowercase chars." – limit: use setdefault {'c': ['C', 'c', 'c'], ...} 54
  • 55.
    The while Statementtasks= [...]while tasks: while 1: … …● It leaves the loop once ● A infinite loop. the tasks is empty. ● It is better to use block mechanism in a loop. – ex. I/O block 55
  • 56.
    The break, continueStatementloop …: loop …: if …: break if …: continue● It terminates a loop. ● It continues with the next iteration. 56
  • 57.
    The break, continueStatement (cont.)● They do the same thing in both C and Python.● Using break or continue is encouraged. – take the place of the complicated condition in a while. – faster, because Python is interpreted.● Just use them. 57
  • 58.
    The pass Statement● Do nothing. 58
  • 59.
    The else Clauseon Loops loop …: … else: …● No a clause on the if statement!● If the loop isn't broken by any break statement, the else block is executed.● It replaces the flags we usually used. 59
  • 60.
    Challenge 3-1: ThePrimes● Try to filter the primes [2, 3, 5, 7, 11, 13, from [2, 100). 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, – without limit. 59, 61, 67, 71, 73, – limit: use loop's else 79, 83, 89, 97] 60
  • 61.
    The try Statementtry: …except LookupError, e: …except (IndexError, KeyError), e: …else: …finally: … 61
  • 62.
    The try Statementin Python 3try: …except LookupError as e: …except (IndexError, KeyError) as e: …else: …finally: … 62
  • 63.
    The try Statement(cont.)● For avoiding to catch the exception we don't expect, you should: – reduce your code in try block. ● move them to else block. – make the exception precise in except statement. ● Avoid using Exception. ● ref: docs.python.org/2/library/exceptions.html#exception-hierarchy● Release the resource in finally block. – or use context manager – ex. file, socket, …● raise SomeError 63
  • 64.
    The def Statementdeff(x, y): def f(x, y=2): return (x, y) return (x, y)f(1, 2) f(1)f(y=2, x=1) f(x=1)f(*(1, 2)) f(*(1, ))f(**{'y': 2, 'x': 1}) f(**{'x': 1}) 64
  • 65.
    The def Statement(cont.)def f(*args): def f(**kargs): return args return kargsf(1, 2, 3) # f(1, 2) # → TypeError f(x=1, y=2, z=3)# f(y=2, x=1) # → TypeError # f(*(1, 2)) # → TypeErrorf(*(1, 2, 3, 4)) f(**{'x': 1, 'y': 2, 'z': 3})# f(**{'y': 2 ,'x': 1})# → TypeError 65
  • 66.
    The def Statement(cont.)def f(x, *args): def f(x, **kargs): return x, args return kargsf(1, 2, 3) # f(1, 2) # → TypeError f(x=1, y=2, z=3)# f(y=2, x=1) # → TypeError # f(*(1, 2)) # → TypeErrorf(*(1, 2, 3, 4)) f(**{'x': 1, 'y': 2, 'z': 3})# f(**{'y': 2, 'x': 1})# → TypeError 66
  • 67.
    The def Statement(cont.)def f(*args, y): def f(*args, **kargs): return kargs return args, kargs→ SyntaxError f(1, 2, 3) f(y=2, x=1) f(*(1, 2, 3, 4)) f(**{'y': 2, 'x': 1}) 67
  • 68.
    The def Statementin Python 3def f(*args, k): def f(*args, k, **kargs): return kargs return args, kargsF(1, 2, 3) f(1, 2, 3)# f(x=1, k=2) # → TypeError f(x=1, k=2)f(*(1, 2, 3, 4)) f(*(1, 2, 3, 4))# f(**{'x': 1, 'k': 2})# → TypeError f(**{'x': 1, 'k': 2}) 68
  • 69.
    The def Statement(cont.) def f(): pass def g(): pass d = {'x': f, 'y': g} d['x']()● Python functions are first-class functions. – It means you can pass functions as arguments, and assign functions to variables. – It is like the function pointers in C. 69
  • 70.
    An Example ofUsing while, try and def.# file: ex_try.py $ python ex_try.pydef take_int(prompt='Give me a int: '): Give me a int: str while 1: try: It is not a int! user_input = int(raw_input(prompt)) Give me a int: abc except ValueError, e: print 'It is not a int!' It is not a int! else: return user_input Give me a int: 100if __name__ == '__main__': I got a int from user: x = take_int() 100 print 'I got a int from user: %d' % x $ 70
  • 71.
    A Trap ofthe Default Value# file: ex_defval_trap.py ● Because the list is created when thedef f(items=[]): function is defined. items.append(1) return items ● Avoid to use the mutable types as theif __name__ == '__main__': default value. print f() # -> [1] print f() # -> [1, 1] print f() # -> [1, 1, 1] 71
  • 72.
    Challenge 4: ABMI Calculator● BMI: Body Mass Index Enter your height (M): – BMI = weight (KG) ÷ height (M)2 1.63 – < 18.5 → Underweight Enter your weight (KG): – [18.5, 25) → Normal weight – [25, 30) → Overweight 49 – >= 30 → Obesity ---● Write a BMI calculator. Your BMI is: – without limit. – limit: only one if 18.44 (Underweight) ● hint: use loop Ideal weight is between: 49.15 ~ 66.42 72
  • 73.
    File I/OOpen anythingwith the open. 73
  • 74.
    The file Objectf= open('input.txt') f =print f.read() open('output.txt', 'w')f.seek(0) f.write('a line.n')for line in f: f.close() print line,f.close() 74
  • 75.
    The Context Manager with open('input.txt') as f: for line in f: print line, f.close()● Python 2.5↑ – Python 2.5.x: from __future__ import with_statement – Python 2.6↑: It is mandatory. 75
  • 76.
    Challenge 2: Countthe Chars (cont.)– limit 3: with the files The path of input: input.txt The path of output: output.txt --- The result was written. 76
  • 77.
    The csv Moudle#!/usr/bin/envpython 1, apple# -*- coding: utf-8 -*- 2, orange# file: ex_csv.py 3, watermelonimport csv ['1', ' apple']with open('ex_csv.csv') as f: ['2', ' orange'] for row in csv.reader(f): print row ['3', ' watermelon'] 77
  • 78.
    The os.path Moudle#file: ex_os_path.py $ python ex_os_path.pyfrom os import walkfrom os.path import join It requires a path asdef list_files(path): paths = [] argument. for root, dir_names, file_names in walk(path): for file_name in file_names: paths.append(join(root, file_name)) $ python ex_os_path.py . return paths …/1if __name__ == '__main__': import sys …/b/4 from os.path import abspath, dirname if len(sys.argv) == 2: …/a/2 path = abspath(dirname(sys.argv[1])) for path in list_files(path): …/a/3 print path else: print 'It requires a path as argument.' 78
  • 79.
  • 80.
    The help Function● In Python shell: ● In terminal: – help(open) – $ pydoc SimpleHTTPServer – dir(open) – $ pydoc csv – $ pydoc os.path – 'n'.join(dir(open)) 80
  • 81.
    Your Documentation $ pydoc ex_doc# file: ex_doc.py Help on module ex_doc:'''module-level doc.''' NAME ex_doc - module-level doc.def f(x): FILE '''A short sentence describesthis function. /home/mosky/programming-with-python/ex_doc.py FUNCTIONS About the parameters, return f(x)value or any other detail ... A short sentence describes this ''' function. pass About the parameters, return value or any other detail ... 81
  • 82.
  • 83.
    Scope# file: ex_scope.py $ python ex_scope.py globalx = 'global' localdef f(): $ if 1: x = 'local' return x ● Scopes are decided by functions.if __name__ == '__main__': print x print f() 83
  • 84.
    The LEGB Rule#file: ex_LEGB.py ● return …global_var = 100 – Local (in function)def f(): enclosed_var = 10 – Enclosed def g(): – Global local_var = 1 return sum([local_var, enclosed_var, – Built-inglobal_var]) return g()if __name__ == '__main__': print f() # -> 111 84
  • 85.
    Challenge 3-2: ThePrimes (cont.)– limit 1: Sieve of [2, 3, 5, 7, 11, 13, Eratosthenes. 17, 19, 23, 29, 31,– limit 2: use set. 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] 85
  • 86.
    Challenge 5: MixAll● You have many $ python mix.py pyramid 10 functions now. … $ python mix.py primes 100 Try to write a CLI … program to trigger your $ python mix.py bmi 1.63 49 functions. … – without limit $ python mix.py blah blah – limit: without if. Please check your args. 86
  • 87.
    Adv. TopicsThere isanother slide. 87

[8]ページ先頭

©2009-2025 Movatter.jp