Presentation on theme: "Sections of Ch. 12, 13, 14 Prof. V. Norman PhD, MS, BS, DDS, Esq."— Presentation transcript:
Sections of Ch. 12, 13, 14 Prof. V. Norman PhD, MS, BS, DDS, Esq.
Tuples Q: I don’t understand the difference between a tuple and a list. Can you explain it? A: A tuple is essentially an immutable list. (Like a string, which is an immutable list of characters.) Once the tuple has been created, it can’t be changed.
Tuple creation Q: Is any bunch of values separated by commas a tuple? The book said they're usually inside parentheses, but that the parentheses are unnecessary; so why would people put the parentheses in? A: The comma operator is really the tuple creation operator, but sometimes it is necessary to use the parentheses. E.g., to pass a tuple literal to a function: s = function( ( ‘a’, ‘tuple’, ‘of’, ‘strings’ ) )
What good are tuples? Q: What good are tuples? Why use them? A: Tuples are not used that much… Some things seem natural as a tuple, like an (x, y) coordinate, or an (r, g, b) color. (Tuples have to be used when using dictionary keys, as keys have to be immutable.) Note: lists are more versatile, because they can be modified.
Tuple example Suppose x and y coordinates of a Scribbler need to be stored in a variable. You could store them as a tuple. Then, you can do a “transformation” on the point, by multiplying it by a factor: def transform(point, factor): return (point * factor, point * factor) orig_coord = (30, 50) # create tuple new_coord = transform(orig_coord, 0.5)
More on Tuples Q: Is there any reason to create single element tuples? A: IMO, no. Q: Doesn’t the last example of 12.1 modify a tuple? A: No: it creates a new tuple and then makes t refer to it. Q: Can a tuple only hold single-character strings? A: No, they can hold anything of any type, like a list can.
Tuple Assignment Q: Can you give more tuple assignment examples? A: Sure… coords = (3, 4) # a tuple with 2 values x, y = coords # x and y created and given # values from coords r, g, b = getColor(pixel) # getColor returns tuple color = (r, g, b) # put them back in a tuple
Tuple as a parameter # Assume we have a pixel type for which # you can set its color. def setColor(pixel, aTuple): pixel.setRed(aTuple) pixel.setGreen(aTuple) pixel.setBlue(aTuple) setColor(myPixel, (30, 255, 192))
Optional Parameters Terminology Required Parameter: a parameter for which a value must be supplied by the caller. Optional Parameter: a parameter in a function’s parameter list that the caller does not have to supply a value for. Default value: the value the code provides for the optional parameter in the function definition. It is used when the caller does not supply a value.
Optional Parameter Example def setColor(pixel, r=0, g=0, b=0): pixel.setColor( (r, g, b) ) setColor(pixel, 255) # full red only setColor(pixel) # (0, 0, 0) is black setColor(pixel, 0, 255, 0) # green setColor(pixel, 255, 255, 255) # white
File operations Q: Why when one opens a file using the write method does all the data in that file get deleted? A: If you open a file for writing, the file contents are wiped out. If you open a file for reading, nothing happens, and you can’t write to it. You can open a file for writing and appending, in which case you don’t wipe out the contents. Prof. Norman to provide examples here…
More useful file operations Can read entire file line by line: f = open(“aFile.txt”) # read-mode for line in f: # do stuff with this line # etc f.close()
More useful file operations Or: f = open(“aFile.txt”) lines = f.readlines() # lines is a list of lines from the file. Or: f = open(“aFIle.txt”) contents = f.read() # entire file read in.
Format Operator Pattern: % Format string contains format sequences: – %d : format number as an integer – %f or %g: format number as a float – %s : format number as a string – %x : format number as an integer in hexadecimal notation
Format operator Format sequence can contain modifiers to describe exactly how to print something out: – %7.3f : format float as using 7 columns, with 3 behind the decimal point – %-8s : format string as using 8 columns, left justified Without this, there is no way to print out stuff exactly as you want it.
Format examples print “girder id: %d, weight %10.5f” % (17, 1056.789203) Produces : girder id: 17, weight 1056.78920 print “Scribbler info: (%d, %d), angle %6.1f” % (x, y, angle) When called with (30, 20, -145) Scribbler info: (30, 20), angle -145.0