Intro to
Programming
with Python

Fall 2011
course
navigation

nov 15

testing user input

I mentioned this way of testing functions that have user input, by giving a function to replace raw_input() during testing:
def number_from_user(default = 3, input_func = raw_input): """ Ask the user for a number and return it. >>> number_from_user(3, lambda x:'8') 8 >>> number_from_user(3, lambda x:'not number') 3 """ message = "What is the number? (%i) " % default user_string = input_func(message) try: number = int(user_string) except: try: number = float(user_string) except: number = default return number

homework

Discuss your final project ideas - and see more ideas below

various python uses

image processing : http://www.gimp.org/docs/python/ within GUI app http://wiki.python.org/moin/ImageMagick command line 3D modeling and animation : http://www.blender.org/development/ (e.g. 2.6 Python API Reference) numerical scientific work : http://numpy.scipy.org games : http://wiki.python.org/moin/PythonGameLibraries audio : http://wiki.python.org/moin/Audio robots : htpp://pyrobotics.org : a python robot API, including simulators wikipedia: python robotics http://www.youtube.com/watch?v=3gHr3oAd_gk (a python robot) internet : network events : twistedmatrix.com web frameworks : django pylons, google app engine, etc (but you also need HTML, CSS, JavaScript, etc)

data structures

We've talked about lists (and the similar tuples) and dictionaries. These really become powerful when you start embedding them :
Look at some examples :
Specific example: the ATM machine
objects might be something like GUI - all interaction with user Data - file input/output Person - name, password Account - each pot of money, e.g. checking, savings Transaction - deposit or withdrawal or transfer with time
The Data object could put the information could be stored in a single python data structure, stored as a string in a file with pprint read in as a string and then eval() to put it into a variable, which could then be converted to, say, a list of Persons, each with a list of history Transactions and several Accounts.
The storage file might look like this :
[{'name': 'John Smith', 'password':'...', 'accounts': [ {'name':'checking', 'balance': 120.23 # or store as pennies}, {'name':'savings', 'balance':4000.00 ], 'transactions': [ {'date':..., 'amount':..., 'from':..., 'to':...}, {...}, ] }, { # similar for another person } ]
The the top level of the program might be something like storage = Data('stored_data.txt') people = storage.readPeople() gui = GUI(people) while True: person = gui.login() # ask for name/pass; return user if match while person.transaction(): storage.save() # update disk file
where several of these objects contain the others, and would call methods on some of the others to get the work done.
I'm imagining that Data contains a list of people, and so can use that to get a string to send to the file.
Likewise, each person contains the gui, so person.transaction() would
  1. use gui to ask about what to do,
  2. create a Transaction object and append it
  3. update the person's balances, and
  4. return False if user is done.

what's next

All the rest of the term's assignments are posted; the one for next week is the last work from the textbook.
For this Thu and next Tue, before spring break, look at the last chapter in the text: algorithms and recursion.
After break, minimal assignments while you work on projects.
In class, I'll go over some of the python uses mentioned above: robots, the internet, science, etc.

in class

We started talking about recursion. The attached file has several examples.
I started but didn't finish a "count how many nodes" exercise, which I encourage you to look at for Thursday.
http://cs.marlboro.edu/ courses/ fall2011/python/ notes/ nov_15
last modified Tuesday November 15 2011 11:20 am EST

attachments [paper clip]

     name last modified size
   fib_recur.py Nov 15 2011 11:20 am 211B    loop_recur.py Nov 15 2011 11:20 am 634B