1 of 15

Finals Week Section

Previous Finals Review

2 of 15

Administrivia

  • HW5 due on 6/9 (Monday)
  • Resubmissions closing next week 6/10 (Tuesday)
  • Final Exam on 6/12 (Next Thursday at SMI 120)
  • 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 15

Final Review Problems

4 of 15

Topics on these slides

  1. Nested structures
  2. Classes
  3. csv.DictReader

Additional problems available here → https://tinyurl.com/cse160spr25finalpractice

5 of 15

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 15

Nested Structures (part a)

List of Dictionaries (other answers may be acceptable)

7 of 15

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 15

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 15

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 15

Classes

Vacant

Occupied

11 of 15

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 15

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 15

Additional Problems!

https://tinyurl.com/cse160spr25finalpractice

14 of 15

Section Code

15 of 15

Course Evaluations

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