Presentation is loading. Please wait.

Presentation is loading. Please wait.

Section06: Sequences Chapter 4 and 5.

Similar presentations


Presentation on theme: "Section06: Sequences Chapter 4 and 5."— Presentation transcript:

1 Section06: Sequences Chapter 4 and 5

2 General Description "Normal" variables Sequence variables: x = 19
The name "x" is associated with a single value Sequence variables: L = (5, 17, 19, -1) A name which is associated with a group of values.

3 Python sequences Immutable types (Ch. 4) Mutables types (Ch. 5)
Strings: a group of characters Tuples: a group of other python objects Mutables types (Ch. 5) Lists: a group of other python objects Dictionaries: a group of key-value pairs (the value is a python object), indentified by key.

4 Length of sequences Returns the number of "things" in the sequence.
S = "ABCDEF" T = (1, 2, 3) U = (4, 5, (6, 7, 8), 9) len(S) # 6 len(T) # 3 len(U) # 4

5 Indexing Sequences (except Dictionaries)
Index number identifies a position. s = "Oranges" Examples: >>> s[0] # 'O' >>> s[2] # 'a' >>> s[-1] # 's' >>> s[-2] # 'e' The indexed value can be used anywhere a "normal" variable / constant would -7 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 O r a n g e s

6 Slicing Sequences Returns a section of a sequence
Doesn't work for Dictionaries. >>> s = "Apples-Oranges" >>> s[1:4] # "ppl" >>> s[5:9] # "s-Or" >>> s[-6:-1] # "range" >>> s[-5:-7] # "" >>> s[10:] # "nges" >>> s[:6] # "Apples" >>> s[1:10:2] # "plsOa" >>> s[12:8:-1] # "egna" >>> s[-1::-1] # "segnarO-selppA" (backward) -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 7 8 9 10 11 12 13 A p l e s - O r a n g

7 for loops A type of repetition, but tied to a sequence. Syntax:
for var in seq: # for-loop block The number of items in seq controls the number of iterations. var: A variable, created / updated by python A reference to the "current" item in the sequence.

8 for loop example s = "ABCDE" for c in s: print(c) Outputs: A B C D E
# Doing the same thing with a while loop i = 0 while i < len(s): c = s[i] print(c) i += 1 s = "ABCDE" for c in s: print(c) Outputs: A B C D E

9 range objects range([start,] end [, step]) Treated as a sequence
Useful when used with for loops Example: for i in range(1, 6,2): # range is (1,3,5) print(i) s = "ABCDE" for i in range(len(s)): # range is (0,1,2,3,4) print(i, s[i])

10 a new random function random.choice(sequence)
Returns a random element of sequence. s = "ABCDEFG" print(random.choice(s)) Here's how we could do this ourself: Indx = random.randint(0,len(s)-1) X = s[Indx] # Same as x = random.choice(s)

11 Concatenation Combining two sequences into a new one. s1 = "ABCDEF"
s2 = "GHI" s3 = s1 + s2

12 count method All sequences have this method.
Returns the # of times that value appears S = "ABCDEFGBH" S.count("B") # returns 2 S.count("AB") # returns 1 S.count("I") # returns 0

13 in operator val in seq Returns True or False if the given value appears in the sequence. Examples: S = "ABCD" "B" in S # True "X" in S # False "AB" in S # True

14 Tuples A (possibly) heterogenous group of python objects.
Deliminted by parentheses (when creating) Examples: T1 = (1, 2, 3, 4, 5) T2 = ("ABC", "DEF", "GHI") T2[1] # "DEF" T2[1][0] # "D" T3 = (1.7, "XYZ", 19) T4 = () # Empty tuple T5 = (5,) # Tuple with only 1 elem. T6 = (10, 11, (12, 13), 14) # Nested T7 = (screen, marioSurf, luigiSurf)

15 Tuples, cont. All the previous operations, work with tuples [Try it!]
Where have we seen tuples already? Colors (pygame.draw.xxx, screen.fill) Positions (pygame.draw.xxx) Window Dimensions (pygame.display.set_mode) Point-lists (pygame.draw.polygon) Rectangles (pygame.draw.rect)

16 2D Tuples A common name for a tuple with tuple (sub-)elements Example:
T[1] + T[2] # (3,2,9,1,-2,10) T[1] + T[1] # (3,2,9,3,2,9) T[1][1] + T[2][-1] # 12

17 Tuple un-packing Another way to extract values from a sequence.
x,y,z = T # x is 1, y is 2, z is 3 One catch: #variables on left must be == len(T)

18 Lists Like a tuple, but they are mutable.
You can add elements You can remove elements You can change elements You can share references to the same thing. Delimited by square brackets. Note: All sequences use square brackets for slicing / indexing. The delimiters are only relevant when creating.

19 Lists Adding an element:
H = L + G # H is now [4, 5, 1.0, 2.0, 3.0] G.append(9.0) # G is now [1.0, 2.0, 3.0, 9.0] G.insert(0, 11.0) # G is [11.0,1.0,2.0,3.0,9.0] G.insert(2, 0.0) # G is [11.0,1.0,0.0,2.0,3.0,9.0] Note: these are both methods of all list objects.

20 Lists, cont. Removing an element L = [1.3, 9.2, 5.8, 1.7, 1.3, 2.1]
Using the remove method L.remove(9.2) # L is [1.3,5.8,1.7,1.3,2.1] L.remove(1.3) # L is [5.8, 1.7, 1.3, 2.1] L.remove(L[0]) # L is [1.7, 1.3, 2.1] L.remove(2.2) # ERROR! Using the del operator del L[0] Note: del can be used to "un-define" any variable, not just mutable seq. variables.

21 Lists, cont. Changing elements L = [1.1, 2.2, 3.3, 4.4, 5.5]
L[0] = 9.9 # L is [9.9, 2.2, 3.3, 4.4, 5.5] L[1:3] = [10.1, 11.11, 12.12] print(L) # [9.9, 10.1, 11.1, 12.12, 4.4, 5.5]

22 Lists & Mutability Mutability means we can change values of a mutable object after it’s created. L = [1.2, 3.7, 5.0, 9.9, 10.3] This is changing the list: L[2] = 4.2 This is re-creating the list (we can do this with immutable types): L = L[:2] + [4.2,] + L[3:]

23 Lists & Mutability, cont.
Mutability also means a variable of a mutable type is a reference (or pointer) to the memory location. L = [1.2, 3.7, 5.0, 9.9, 10.3] Address Value This is L 1024 8000 This is the actual 1.2 list data. 8004 3.7 (4 bytes per float) 8008 5.0 8012 9.9 8016 10.3

24 Lists & Mutability, cont.
This is important because assigning a new variable = to the mutable object simply copies the reference. L = [1.2, 3.7, 5.0, 9.9, 10.3] Address Value This is L 1024 8000 This is the actual 1.2 list data. 8004 3.7 (4 bytes per float) 8008 99 8012 9.9 8016 10.3 Address Value This is L 1024 8000 This is the actual 1.2 list data. 8004 3.7 (4 bytes per float) 8008 5.0 8012 9.9 8016 10.3 K = L K[2] = 1000 print(K) [1.2, 3.7, 1000, 9.9, 10.3] print(L) [1.2, 3.7, 1000, 9.9, 10.3] This is K 12100 8000

25 Lists & Mutability We’ll see other mutable objects in python:
Dictionaries Objects (from Object-Oriented Programming)

26 Event (input) handling
Part III Event (input) handling

27 Input and Windowed-OS’s
Windowed OS’s (Windows, OSX, GUI-linux’s) send messages (events) when the user does something “on” the window: Move mouse Press a key Close the window Resize the window Minimize / maximize The window notifies the program when these first happen. The application can respond to these (event handling)

28 Input and Windowed OS’s
An application can also use device-polling to get the current state of an input device. “Is the ‘a’ key currently pressed? Where is the mouse cursor?

29 Event handling in pygame
The pygame.event.get() function returns a list of new event objects. Each object has a .type attribute (a variable) You can compare it to pygame.XYZ variables to determine its type. Depending on the type, the event object may have other Calling pygame.event.get() empties the event queue for your window.

30 Examples Write a program which:
Can be closed by clicking the ‘X’ or by pressing escape. Can be resized / fullscreen-ed Draws a square at a random location when a key is pressed. Moves a circle when the arrow keys are pressed.

31 Device Polling in pygame
Emptying the event queue saves input device state to various module variables pygame.mouse.xyz pygame.keyboard.xyz pygame.joystick.xyz You can call functions in these modules to determine the current state of the device. If you’re not doing event handling, you must call pygame.event.pump() to process events.

32 Device polling important func’s
Mouse pygame.mouse.get_pos() pygame.mouse.get_pressed() Keyboard pygame.key.get_pressed() Joysticks:

33 Example Write a program which:
Draws a circle at the mouse cursor’s location That can’t go off-screen Draws a square controllable by the arrow keys. Quits by pressing escape.

34 A few pygame tidbits Clock objects Sounds / Music Font objects
tick get_fps Sounds / Music loading and playing Font objects rendering blitting Images (sprites) loading and blitting Off-screen Surfaces

35 Back to sequences…

36 Examples Example1. Star-field Example2. Space-invaders start
Moving Changing colors Example2. Space-invaders start Moving spaceship Fire key Moving (& Fading) bullets Power-up: stream of bullets Example3. Space-invaders, pt II Line of aliens Hit-detection Sounds

37 Dictionary A sequence of key-value pairs
Key is usually a string or integer Value can be any python object There is no order to the elements So, there isn't a first or a last element Python uses its own algorithm to order elements (for efficient access) You access values by using the key.

38 Dictionary operations
Creating an empty dictionary: D = {} Creating a dictionary with string-float pairs D2 = {"ABC":42.9, "DEF":13.8, "GHI":-19.1} Getting a list of keys or values D2.keys() # Returns ["ABC", "GHI", "DEF"] or something like this. Getting a list of values D2.values() # Returns [42.9, -19.1, 13.8]

39 Dictionary Index'ing Using an existing element
print(D2["ABC"]) Changing a value for an existing key D2["ABC"] = 100.3 Adding a new value D2["XYZ"] = 0.0 Note how this looks the same as modifying.

40 Dictionary examples [Using integers as a key]
[Load a sequence of sounds]


Download ppt "Section06: Sequences Chapter 4 and 5."

Similar presentations


Ads by Google