1 of 13

Final Review

2 of 13

Administrivia

  • Written Check-in #10 due Friday Dec. 5
  • Final Resubmissions Cycle closes Friday Dec. 5
    • Fill out the form!
  • Final Exam on Monday Dec. 8
    • KNE 110 2:30pm - 4:20pm
  • Make sure to fill out course evaluations as well!
    • We will leave ten minutes at the end of class to fill them out

3 of 13

What do you want

to review?

Were there any confusing lectures or topics that would be helpful to revisit?

4 of 13

Final Review Problems

5 of 13

Nested Structures (part a)

What data structure would you use if you wanted to keep track of animal species (dog, cat, fish, etc), animal name (John, Paul, Ringo, etc), and animal age (4, 2, 8, etc). It would be best for each animal in the shelter to have its own entry. Additionally, we should be able to easily get each of the three attributes for that animal.

  • Triply nested list
  • List of dictionaries
  • Dictionary of dictionaries
  • Dictionary with list as values

6 of 13

Nested Structures (part a)

List of Dictionaries (other answers may be acceptable)

7 of 13

Nested Structures (part b)

Given these animals, represent them in the data structure you chose.

animal,name,age

Dog,Connor,5

Cat,Miko,8

Fish,Smithy,5

Dog,Flower,3

Cat,Bjorki,2

8 of 13

Nested Structures (part b)

[{"animal": "Dog", "name": "Connor", "age": 5}.

{"animal": "Cat", "name": Miko, "age": 8},

{"animal": "Fish", "name": "Smithy", "age": 5},

{"animal": "Dog", "name": "Flower", "age": 3},

{"animal": "Cat", "name": "Bjorki", "age": 2}]

9 of 13

Classes

2. What will the following code print?

class Apartment:

def __init__(self, unit,

rent, occupied):

self.unit = unit

self.rent = rent

self.occupied = occupied

def toggle_occupancy(self):

self.occupied = not self.occupied

def get_status(self):

if self.occupied == True:

return "Occupied"

else:

return "Vacant"

apt = Apartment("1A", 1200, False)

print(apt.get_status())

apt.toggle_occupancy()

print(apt.get_status())

10 of 13

Classes

Vacant

Occupied

11 of 13

CSV DictReader

agreeableness,openness,extraversion,conscientiousness,neuroticism

36,41,72,45,26

73,5,35,53,66

84,16,16,82,68

Write a function called analyze_personality(filename) that takes in a .csv filename and returns a list of dictionaries. Each dictionary contains the following information for each row:

"mean": Mean of all of the numbers for a row as a float

"personality": The name of the personality trait with the highest number as a string.

12 of 13

CSV DictReader

def analyze_personality(filename):

output = []

with open(filename) as f:

reader = csv.DictReader(f)

for row in reader:

avg = 0

highest = ("", 0)

for key, val in row.items():

val = float(val)

avg += val

if val > highest[1]:

highest = (key, val)

output.append({"mean": avg / len(row), "personality": highest[0]})

return output

13 of 13

Course Evaluations

Please take 5-10 mins to fill out the course and section evaluations