Files
lab_weather/friend_functions.py
juddin2 eb80dc7c0b Wrote codes to implement each function.
One place I got stuck was when I was trying to write get_color_dict
because I was not sure how to loop through each person and their favorite colors to count them.
 I got unstuck by going through my notes from CSE 115.
2025-10-12 22:38:43 -04:00

117 lines
3.2 KiB
Python

# friend_functions.py
# ------------
# By MWC Contributors
#
# Each of the functions below expects a list of dictionaries as its first
# argument. Two examples of the expected input are provided in people.family
# and people.friends.
# Your job is to complete these functions. Remove the NotImplementedError from
# each and instead write code which returns the expected values.
def count_people(people):
"""Counts the number of people.
>>> count_people(family)
5
>>> count_people(friends)
10
"""
return len(people)
def get_email(people, name):
"""Returns the named person's email address. If there is no such person, returns None.
>>> get_email(family, "Tad Winters")
"ligula.aenean@hotmail.edu"
>>> get_email(friends, "Tad Winters")
None
"""
for p in people:
if p["name"] == name:
return p["email"]
return None
def count_favorite_colors(people, name):
"""Returns the number of colors liked by the named person. If there is no such person, returns None.
>>> count_favorite_colors(family, "Tad Winters")
2
>>> count_favorite_colors(family, "Raphael Chambers")
1
"""
for p in people:
if p["name"] == name:
return len(p["favorite_colors"])
return None
def people_who_like_color(people, color):
"""Returns a list containing only those people who like the given color.
>>> people_who_like_color(family, "yellow")
[
{
"name": "Walker Hurley",
"email": "auctor.odio@icloud.ca",
"favorite_colors": ["red", "yellow", "blue", "orange"],
},
{
"name": "Clementine Joseph",
"email": "hendrerit@aol.co.uk",
"favorite_colors": ["yellow", "aqua", "black"],
}
]
>>> people_who_like_color(family, "indigo")
[]
"""
result = []
for p in people:
if color in p["favorite_colors"]:
result.append(p)
return result
def count_people_who_like_color(people, color):
"""Returns the number of people who like a given color.
>>> count_people_who_like_color(family, "red")
2
>>> count_people_who_like_color(family, "orange")
1
"""
count = 0
for p in people:
if color in p["favorite_colors"]:
count= count + 1
return count
def get_color_dict(people):
"""Returns a dict showing how many people like each color.
Any color liked by any of the people will be included, and only colors
liked by someone will be included. The order of items in the dict doesn't matter.
>>> get_color_dict(family)
{
"aqua": 2,
"red": 2,
"blue": 2,
"black": 2,
"white": 1,
"grey": 1,
"yellow": 2,
"orange": 1,
}
"""
color_counts = {}
for p in people:
for color in p["favorite_colors"]:
if color in color_counts:
color_counts[color]=color_counts[color] + 1
else:
color_counts[color] = 1
return color_counts