Download presentation
Presentation is loading. Please wait.
Published byChad Russell Modified over 9 years ago
2
Lilian Blot TPOP Practical Assignment Optional, but you are strongly encourage to do it, especially if you are new to programming Available on Module webpage from next week (week 6) Deadline: Friday 14 November at 12:00 pm. submitted by email to lilian.blot@york.ac.uklilian.blot@york.ac.uk with the subject: "TPOP Assignment“ Feedback and Mark given by appointment ONLY must improve / pass / good (2.1) / very good (1st) Autumn 2014 TPOP 1
3
Lilian Blot Open Surgery If you fill that you are struggling, sometime a 15 minutes face-to-face meeting helps to clear a lot of problems. I have reserved three sessions in week6 You can book a 15 minutes slot using the following link via Google calendar AppGoogle calendar App Autumn 2014 TPOP 2
4
Lilian Blot A word (or more) of Wisdom It’s the journey, not the destination. Could not find the author Sometime it’s the journey that teaches you a lot about your destination Drake (Rapper) Autumn 2014 TPOP 3
5
Lilian Blot CORE ELEMENTS PART VI: DICTIONARIES & HANDLING ERRORS Lecture 8 Autumn 2014 TPOP 4
6
Lilian Blot Overview Review on Iterables (list, strings, tuples) and loops Dictionaries A new data type Handling Exceptions try-except-else-finally Raising exceptions raise Autumn 2014 TPOP 5
7
Lilian Blot Iterating through Lists We have seen two ways to traverse an iterable (list, string, tuple). Which one should we choose? Autumn 2014 TPOP 6 lst = [’a’,’b’,’c’,’d’] for val in lst: print val.upper() Code 1 lst = [’a’,’b’,’c’,’d’] for val in xrange(len(lst)): lst[val] = lst[val].upper() Code 2 The variable val will take the value ’a’, then ’b’, … The variable val will take the value 0, then 1, … READ READ/ASSIGN
8
Lilian Blot Iterating through Lists For the second code snippet, use a better name for the variable containing the index in the array. index, pos, row, col, … Autumn 2014 TPOP 7 lst = [’a’,’b’,’c’,’d’] for val in lst: print val.upper() Code 1 lst = [’a’,’b’,’c’,’d’] for index in xrange(len(lst)): lst[index] = lst[index].upper() Code 2 The variable val will take the value ’a’, then ’b’, … The variable index will take the value 0, then 1, … READ READ/ASSIGN
9
Lilian Blot Iterating through Lists When using while remember to: Initialise the index variable Change the index variable (to avoid infinite loop) Autumn 2014 TPOP 8 lst = [’a’,’b’,’c’,’d’] index = 0 while index < len(lst): lst[index] = lst[index].upper() index = index + 1 Code 3 lst = [’a’,’b’,’c’,’d’] for index in xrange(len(lst)): lst[index] = lst[index].upper() Code 2
10
Lilian Blot ANOTHER PYTHON BUILT-IN TYPE Dictionaries Autumn 2014 TPOP 9
11
Lilian Blot Caesar Cipher Autumn 2014 TPOP 10 Alphabetabcdefg… Keycazbgdx…
12
Lilian Blot Be Cleverer than Brute Force Frequency analysis: A way to identify symbols with similar frequencies Which Data representation? [(‘a’, 8.167), (‘b’, 1.492)…] ? How to create the frequency table of the encrypted message? Is our data representation efficient? We may need a new data structure Autumn 2014 TPOP 11
13
Lilian Blot Dictionaries A new built-in data structure Is MUTABLE Map a key to a value Keys must be immutable objects int, float, string, tuple Values can be any object list, dictionary, int, float, string, … Autumn 2013 TPOP 12
14
Lilian Blot How to Create/Use a Dictionary General form dict_name = {key1:value1, key2:value2, …} Retrieving a value: dict_name [key] adding/modifying a value: dict_name [key] = value deleting a value: del dict_name [key] Autumn 2013 TPOP 13
15
Lilian Blot Dictionaries A fast way to retrieve a value in a collection of values Better than list, if we don’t know the index of the element to retrieve Adding an new element to a list is faster than adding it to a dictionary As long as the list is not sorted Autumn 2014 TPOP 14
16
Lilian Blot Dictionaries How to apply this structure to our decoding problem? What would be the keys? What would be the values? Autumn 2014 TPOP 15
17
Lilian Blot HANDLING ERRORS Exceptions Autumn 2014 TPOP 16
18
Lilian Blot Why Use Exceptions? To Jump around arbitrarily large chunks of a program Error Handling When an error is detected at runtime Event Notification Can also be used to signal a valid condition Special-case Handling When some condition may happen rarely Autumn 2014 TPOP 17
19
Lilian Blot A Simple Program see code ‘ user division first attempt ’ Autumn 2014 TPOP 18
20
Lilian Blot A Simple Program Dealing with user inputs What if the user enters a invalid number format An error occurs: ValueError The program crashes Handling errors with try-except see code ‘ user division second & third attempt ’ Autumn 2014 TPOP 19 try: except ErrorType: Code
21
Lilian Blot A Simple Program Handling many different type of errors with try-except At most one handler will be executed see code ‘ user division final attempt ’ Autumn 2014 TPOP 20 try: except ErrorTypeOne: except ErrorTypeTwo: except (ErrorTypeThree, ErrorTypeFour, ErrorTypeFive) : Code
22
Lilian Blot try-except-else The try... except statement has an optional else clause, must follow all except clauses. It is useful for code that must be executed if the try clause does not raise an exception. Autumn 2014 TPOP 21 try: f = open(arg, 'r') except IOError: print 'cannot open', arg else: print arg, 'has', len(f.readlines()), 'lines' f.close() Code
23
Lilian Blot try-finally The try statement has another optional clause intended to define clean-up actions that must be executed under all circumstances. A finally clause is always executed before leaving the try statement, whether an exception has occurred or not Autumn 2014 TPOP 22 try: f = open(arg, 'r') except IOError: print 'cannot open', arg else: print arg, 'has', len(f.readlines()), 'lines‘ finally: f.close() Code
24
Lilian Blot raise The raise statement allows the programmer to force a specified exception to occur. Autumn 2014 TPOP 23 def myDiv(numerator, divisor): if divisor == 0: raise ValueError(’argument divisor must not be 0’) else: return numerator/divisor Code
25
Lilian Blot raise If you need to determine whether an exception was raised but don’t intend to handle it, a simpler form of the raise statement allows you to re-raise the exception Autumn 2014 TPOP 24 try: f = open(arg, 'r') except IOError: print 'cannot open', arg raise Code
26
Lilian Blot Summary We have seen how to: handle exception raise exception Autumn 2014 TPOP 25
27
Lilian Blot Reading Handling Exceptions http://docs.python.org/2/tutorial/errors.html http://docs.python.org/2/tutorial/errors.html built-in Exceptions list http://docs.python.org/2.7/library/exceptions.html#bltin- exceptions http://docs.python.org/2.7/library/exceptions.html#bltin- exceptions Autumn 2014 TPOP 26
28
Lilian Blot Odds and Ends When an exception occurs, it may have an associated value, also known as the exception’s argument. The presence and type of the argument depend on the exception type. Autumn 2014 TPOP 27 try: f = open(arg, 'r') except IOError as instExc: # instExc is a variable that # can be inspected print 'cannot open', arg print ‘errors is:', instExc else: print arg, 'has', len(f.readlines()), 'lines' f.close() Code
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.