python tutorial #1

Upload: tcdnetsoc

Post on 09-Apr-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/7/2019 Python Tutorial #1

    1/19

    .

    .

    . ..

    .

    .

    Beginning Python

    Netsoc

    Stephen Shaw

    2010

    Netsoc (Stephen Shaw) 2010 1 / 19

  • 8/7/2019 Python Tutorial #1

    2/19

    Getting started

    SSH to one of our servers

    $ ssh [email protected]

    PuTTY: Enter login.netsoc.tcd.ie as the hostname

    NX on cube if you want - all you need is a shell thoughNo netsoc account?

    CS: macneill.scss.tcd.ie

    Maths servers?Talk to an admin before you leave so you have an account for next time

    Netsoc (Stephen Shaw) 2010 2 / 19

    http://macneill.scss.tcd.ie/
  • 8/7/2019 Python Tutorial #1

    3/19

    The plan

    Schedule

    This week - The basics

    Week 2 - Modules, packages, the PYPI, Hacking up text with python -

    screen scraping, regular expressions, unicodeWeek 3 - Miscellaneous fun (maybe a bit of PyGame?)

    Most likely in the Arts Building Mac labs next week - details later in the

    week

    These slides: http://www.netsoc.tcd.ie/~stesh/python/1.pdf

    Netsoc (Stephen Shaw) 2010 3 / 19

    http://www.netsoc.tcd.ie/~stesh/python/1.pdf
  • 8/7/2019 Python Tutorial #1

    4/19

    About python

    Duck-typed, multiparadigm, general-purpose programming language

    Born in the late '80s - older than Java

    Awesome!

    Python is an interpreted language (sort of)

    Hacking up things

    Google, YouTube, (netsoc!)

    Libraries for almost any conceivable task

    Netsoc (Stephen Shaw) 2010 4 / 19

  • 8/7/2019 Python Tutorial #1

    5/19

    Diving into python

    We'll use Python 3.1.3

    At the prompt, type python3

    stesh@spoon : [18:10]% python3

    Python 3.1.3 (r313 :86834, Nov 28 2010, 10:01:07)

    [GCC 4.4.5] on linux2

    Type "help", "copyright", "credits" or "license" for more information .

    >>>

    You're now in the REPL - Read-Eval-Print-Loop

    Python reads an expression from you, evaluates it, and prints it

    Try it now!

    If you don't know how something words, type help(thething)

    Usual mathematical operators. Use ** for exponentiation

    Netsoc (Stephen Shaw) 2010 5 / 19

  • 8/7/2019 Python Tutorial #1

    6/19

    Functions

    Functions look like this:

    defarea(radius ):

    i fradius < 0:

    radius = - radius

    pi = 3.14return pi * r**2

    No need to say what types variables have

    Variables can change type any time

    Indentation - very important

    Different indentation changes the meaning of your program!

    Line-ending semicolons are optional

    Netsoc (Stephen Shaw) 2010 6 / 19

  • 8/7/2019 Python Tutorial #1

    7/19

    If, else

    x, y = 4, 6

    i fx != 5 and y < 100:something ()

    e l i f x % 2 == 0 or 0 < x < y < 34:

    something_else ()

    e l i f not(True or False):

    something_different() # Will never rune l s e :

    stuff ()

    Only need parentheses when things are ambiguous

    and, or, not, ==, !=, ,

    Multiple assignment and iterable unpacking

    Indentation!

    Comments begin with a #

    Netsoc (Stephen Shaw) 2010 7 / 19

  • 8/7/2019 Python Tutorial #1

    8/19

    Loops

    ministers = ['Mary', 'Batt', 'Noel ', 'Dermott']f o r minister i n ministers:

    p r i n t(minister + " has retired!")

    f o r beatle i n {'Ringo', 'George', 'Paul', 'John'}:

    p r i n t(beatle )

    f o r c i n 'Stephen':

    p r i n t(c)

    f o r word i n 'This is a sentence '.split ():

    p r i n t(word)

    Netsoc (Stephen Shaw) 2010 8 / 19

  • 8/7/2019 Python Tutorial #1

    9/19

    Lists

    Python's equivalent to arrays

    The `workhorse'LISP-like, I'm told

    [1, 2, 3, 4, 5]

    List of strings the lazy way:

    mylist = 'A big long list of strings'.split()Lists are mutable (change their size whenever you want):

    mylist.append(element)

    Lists can hold anything, including objects of different types:

    ['a string', 1, True, ['2']]

    Add lists to other lists: [1, 2, 3, 4] + [5, 6, 7, 8]

    [1, 2, 3, 4, 5, 6, 7, 8]

    Reversing: reversed(mylist)

    Sorting: sorted(mylist)

    Netsoc (Stephen Shaw) 2010 9 / 19

  • 8/7/2019 Python Tutorial #1

    10/19

    Slicing

    Access elements with [] notation: mylist[2] returns 'long'

    Much richer than that:

    mylist[1:] - `Everything except the first index'mylist[5:10] - `All indices from 5 inclusive to 10'

    mylist[5:10:2] - `All indices from 5 inclusive to 10, counting up in twos'mylist[:-2] - `Everything except the last two indices'

    mylist[1:-1] - `Everything except the first and last indices'

    mylist[::] - `All indices'mylist[::-1] - `All indices, counting from the right (reverse the list)'

    Using a list as a stack:

    mylist.append(element)

    mylist.pop()

    Netsoc (Stephen Shaw) 2010 10 / 19

  • 8/7/2019 Python Tutorial #1

    11/19

    More about strings

    Replacing: 'DUCSS'.replace('U', 'I')

    In most cases, you can treat a string as if it were a list:

    'Netsoc'[2] will return t

    reversed('apache') gives you a new string 'ehcapa''e' in 'Netsoc'

    This is because both strings and lists are iterablesIterables are very widespread in Python

    Let's look at some more iterables

    Netsoc (Stephen Shaw) 2010 11 / 19

  • 8/7/2019 Python Tutorial #1

    12/19

    Tuples

    A bit like lists, except immutable: (1, 2, 3)

    Once a tuple is created, it can't be changed, only accessed

    mytuple + (5, 6, 7, 8) creates a whole new tupleYou can make a list from a tuple, and (sometimes) vice-versa:

    tuple([1, 2, 3])

    `A list is a pencil, a tuple is a pen'

    Netsoc (Stephen Shaw) 2010 12 / 19

  • 8/7/2019 Python Tutorial #1

    13/19

    Sets

    Unordered collection of things with no repeated elements - noguarantee that elements will come out in the order you put them in

    Often really fast

    beatles = {'John', 'Paul', 'George', 'Ringo'}

    OperationsA.add(element)

    A.remove(element)

    A.union(B)

    A.intersection(B)

    A - BA.difference(B)

    A.issubset(B)

    Netsoc (Stephen Shaw) 2010 13 / 19

  • 8/7/2019 Python Tutorial #1

    14/19

    Comprehensions

    Really powerful way to make iterable things

    `Give me all the strings in mylist that don't contain a q':

    [x for x in mylist if'q'not in x]

    `Give me the set of all the even integers between 0 and 100':

    {x for x in range(100)ifx % 2 == 0}

    `Give me a copy of my list of integers as a list of strings':

    [str(x) for x in mylist]

    Netsoc (Stephen Shaw) 2010 14 / 19

  • 8/7/2019 Python Tutorial #1

    15/19

    Dictionaries

    Also very important

    council = {

    'secretary': 'br0kend'

    'PRO': 'lux',

    'treasurer': 'dalamar',

    'amenities': 'don',

    'auditor': 'mk429',

    'admin': 'mu',

    'webmaster': 'theorie'

    }

    Associate things with other things

    council['auditor'] 'mk429'

    'admin' in council returns True

    Useful when you're counting occurrences of things

    Netsoc (Stephen Shaw) 2010 15 / 19

  • 8/7/2019 Python Tutorial #1

    16/19

    Anonymous functions

    Cool

    Functions are first-class objects in python

    Can pass functions/methods as arguments to other functions/methods

    Functions need not be bound to a name

    # Sends x to itself raised to the power of 2

    lambda x: x**2

    # Binding to a name:

    capitalize = lambda x: x.upper ()

    # Passing a function to a function:

    defapply(function , argument):

    (function)(argument)

    Used extensively in map, filter and reduce

    A taste of functional programming

    Netsoc (Stephen Shaw) 2010 16 / 19

    F l

  • 8/7/2019 Python Tutorial #1

    17/19

    Files

    Easy!

    with myfile as open('myfile.txt'):

    while True:

    line = mylist .readline ()

    i fline == '':break

    dosomething ()

    use .read() to read it all at once

    The with statement is relatively new

    Does something vaguely similar to blocks in ruby

    Netsoc (Stephen Shaw) 2010 17 / 19

    E i

  • 8/7/2019 Python Tutorial #1

    18/19

    Exceptions

    No surprises hereExceptions have a big class hierarchy

    raise to raise an exceptiontry to begin an excepting block

    except to `catch'

    finally cleaning up

    t r y :

    p r i n t(mydict [key ])

    except KeyError:

    p r i n t('Oh noes! ')

    Can often be avoided:

    i fkey i n mydict :

    p r i n t(mydict [key ])

    e l s e :

    p r i n t('Oh noes! ')

    Netsoc (Stephen Shaw) 2010 18 / 19

    I lli

  • 8/7/2019 Python Tutorial #1

    19/19

    Installing

    Linux, OS X: you probably have python installed already

    Python is an integral part of most *nixes.

    Python 3 is in most repos (there is *usually* a non-broken package in

    MacPorts)Python 3 default in Arch Linux (:-S)

    There is a comprehensive python implementation for Windows

    I've never tried it, so can't offer any advice there

    Questions?

    Netsoc (Stephen Shaw) 2010 19 / 19