Final Review
Administrivia
What do you want
to review?
Were there any confusing lectures or topics that would be helpful to revisit?
Final Review Problems
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.
Nested Structures (part a)
List of Dictionaries (other answers may be acceptable)
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
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}]
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())
Classes
Vacant
Occupied
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.
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
Course Evaluations
Please take 5-10 mins to fill out the course and section evaluations