summary of chapter 1 part 1
play

Summary of Chapter 1 (part 1) Summary of Python Functionality in - PDF document

5mm. Summary of Chapter 1 (part 1) Summary of Python Functionality in INF1100 Programs must be accurate! Variables are names for objects We have met different object types: int , float , str Hans Petter Langtangen Choose variable names close


  1. 5mm. Summary of Chapter 1 (part 1) Summary of Python Functionality in INF1100 Programs must be accurate! Variables are names for objects We have met different object types: int , float , str Hans Petter Langtangen Choose variable names close to the mathematical symbols in the Simula Research Laboratory problem being solved University of Oslo, Dept. of Informatics Arithmetic operations in Python: term by term (+/-) from left to right, power before * and / – as in mathematics; use parenthesis when there is any doubt Watch out for unintended integer division! Summary of Python Functionality in INF1100 – p.1/ ?? Summary of Python Functionality in INF1100 – p.2/ ?? Summary of Chapter 1 (part 2) Summary of loops, lists and tuples Mathematical functions like sin x and ln x must be imported from Loops: the math module: while condition: <block of statements> from math import sin, log x = 5 for element in somelist: r = sin(3*log(10*x)) <block of statements> Use printf syntax for full control of output of text and numbers Lists and tuples: >>> a = 5.0; b = -5.0; c = 1.9856; d = 33 mylist = [’a string’, 2.5, 6, ’another string’] >>> print ’a is’, a, ’b is’, b, ’c and d are’, c, d mytuple = (’a string’, 2.5, 6, ’another string’) a is 5.0 b is -5.0 c and d are 1.9856 33 mylist[1] = -10 mylist.append(’a third string’) Important terms: object, variable, algorithm, statement, mytuple[1] = -10 # illegal: cannot change a tuple assignment, implementation, verification, debugging Summary of Python Functionality in INF1100 – p.3/ ?? Summary of Python Functionality in INF1100 – p.4/ ?? List functionality How to find more Python information The book contains only fragments of the Python language a = [] initialize an empty list (intended for real beginners!) a = [1, 4.4, ’run.py’] initialize a list These slides are even briefer a.append(elem) add elem object to the end Therefore you will need to look up more Python information Primary reference: The official Python documentation at a + [1,3] add two lists docs.python.org a[3] index a list element Very useful: The Python Library Reference, especially the index a[-1] Example: what can I find in the math module?Go to the Python get last list element Library Reference index, find "math", click on the link and you get a[1:3] slice: copy data to sublist (here: index to a description of the module del a[3] delete an element (index 3 ) Alternative: pydoc math in the terminal window (briefer) a.remove(4.4) remove an element (with value 4.4 ) Note: for a newbie it is difficult to read manuals (intended for experts) – you will need a lot of training; just browse, don’t read a.index(’run.py’) find index corresponding to an elemen everything, try to dig out the key info ’run.py’ in a test if a value is contained in the list a.count(v) Summary of Python Functionality in INF1100 – p.5/ ?? Summary of Python Functionality in INF1100 – p.6/ ?? count how many elements that have t Summary of if tests and functions Summary of reading from the keyboard and command line If tests: Question and answer input: if x < 0: var = raw_input(’Give value: ’) # var is string! value = -1 elif x >= 0 and x <= 1: # if var needs to be a number: value = x var = float(var) else: # or in general: value = 1 var = eval(var) User-defined functions: Command-line input: def quadratic_polynomial(x, a, b, c) import sys value = a*x*x + b*x + c parameter1 = eval(sys.argv[1]) derivative = 2*a*x + b parameter3 = sys.argv[3] # string is ok return value, derivative parameter2 = eval(sys.argv[2]) Recall: sys.argv[0] is the program name # function call: x = 1 p, dp = quadratic_polynomial(x, 2, 0.5, 1) p, dp = quadratic_polynomial(x=x, a=-4, b=0.5, c=0) Positional arguments must appear before keyword arguments: def f(x, A=1, a=1, w=pi): return A*exp(-a*x)*sin(w*x) Summary of Python Functionality in INF1100 – p.7/ ?? Summary of Python Functionality in INF1100 – p.8/ ??

  2. Summary of reading command-line arguments with getopt Summary of eval and exec -option value pairs with the aid of getopt : Evaluating string expressions with eval : import getopt >>> x = 20 options, args = getopt.getopt(sys.argv[1:], ’’, >>> r = eval(’x + 1.1’) [’parameter1=’, ’parameter2=’, ’parameter3=’, >>> r ’p1=’, ’p2=’, ’p3=’] # shorter forms 21.1 >>> type(r) # set default values: <type ’float’> parameter1 = ... Executing strings with Python code, using exec : parameter2 = ... parameter3 = ... exec(""" from scitools.misc import str2obj def f(x): for option, value in options: return %s if option in (’--parameter1’, ’--p1’): """ % sys.argv[1]) parameter1 = eval(value) # if not string elif option in (’--parameter2’, ’--p2’): parameter2 = value # if string elif option in (’--parameter3’, ’--p3’): parameter3 = str2obj(value) # if any object Summary of Python Functionality in INF1100 – p.9/ ?? Summary of Python Functionality in INF1100 – p.10/ ?? Summary of exceptions Array functionality Handling exceptions: array(ld) copy list data ld to a numpy array try: <statements> asarray(d) make array of data d (copy if necessa except ExceptionType1: <provide a remedy for ExceptionType1 errors> except ExceptionType2, ExceptionType3, ExceptionType4: zeros(n) make a vector/array of length n , with <provide a remedy for three other types of errors> except: zeros(n, int) make a vector/array of length n , with <provide a remedy for any other errors> ... zeros((m,n), float) make a two-dimensional with shape ( Raising exceptions: if z < 0: zeros(x.shape, x.dtype) make array with shape and element ty raise ValueError\ (’z=%s is negative - cannot do log(z)’ % z) linspace(a,b,m) uniform sequence of m numbers betw seq(a,b,h) uniform sequence of numbers from a iseq(a,b,h) uniform sequence of integers from a a.shape tuple containing a ’s shape a.size total no of elements in a len(a) length of a one-dim. array a (same as Summary of Python Functionality in INF1100 – p.11/ ?? Summary of Python Functionality in INF1100 – p.12/ ?? Summary of difference equations Summary of file reading and writing Sequence: x 0 , x 1 , x 2 , . . . , x n , . . . , x N Reading a file: infile = open(filename, ’r’) Difference equation: relation between x n , x n − 1 and maybe x n − 2 for line in infile: # process line (or more terms in the "past") + known start value x 0 (and more values x 1 , ... if more levels enter the equation) lines = infile.readlines() for line in lines: Solution of difference equations by simulation: # process line index_set = <array of n-values: 0, 1, ..., N> x = zeros(N+1) for i in range(len(lines)): x[0] = x0 # process lines[i] and perhaps next line lines[i+1] for n in index_set[1:]: x[n] = <formula involving x[n-1]> fstr = infile.read() # process the while file as a string fstr Can have (simple) systems of difference equations: infile.close() for n in index_set[1:]: x[n] = <formula involving x[n-1]> Writing a file: y[n] = <formula involving y[n-1] and x[n]> Taylor series and numerical methods such as Newton’s method outfile = open(filename, ’w’) # new file or overwrite outfile = open(filename, ’a’) # append to existing file can be formulated as difference equations, often resulting in a outfile.write("""Some string good way of programming the formulas .... """) Summary of Python Functionality in INF1100 – p.13/ ?? Summary of Python Functionality in INF1100 – p.14/ ?? Dictionary functionality Summary of some string operations s = ’Berlin: 18.4 C at 4 pm’ a = {} s[8:17] # extract substring initialize an empty dic s.find(’:’) # index where first ’:’ is found s.split(’:’) # split into substrings a = {’point’: [2,7], ’value’: 3} initialize a dictionary s.split() # split wrt whitespace ’Berlin’ in s # test if substring is in s a = dict(point=[2,7], value=3) s.replace(’18.4’, ’20’) initialize a dictionary s.lower() # lower case letters only s.upper() # upper case letters only a[’hide’] = True add new key-value pa s.split()[4].isdigit() s.strip() # remove leading/trailing blanks a[’point’] get value correspond ’, ’.join(list_of_words) ’value’ in a True if value is a k del a[’point’] delete a key-value pa a.keys() list of keys a.values() list of values len(a) number of key-value for key in a: loop over keys in unk for key in sorted(a.keys()): Summary of Python Functionality in INF1100 – p.15/ ?? loop over keys in alph Summary of Python Functionality in INF1100 – p.16/ ??

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend