Skip to article frontmatterSkip to article content

Quiz 2 Prep - Python Applications

  • The challenges here are optional and are not graded.
  • Use these challenges to prepare yourself for the upcoming quiz.
  • You will have 25 minutes to complete two questions that are similar to the ones shown here.

▶️ First, run the code cell below to import unittest, a module used for 🧭 Check Your Work sections and the autograder.

# DO NOT MODIFY THE CODE IN THIS CELL
import unittest

tc = unittest.TestCase()

🎯 Challenge 1: Average Number of Reviews using a For Loop

You are given a list-type variable named products, which contains a list of dictionaries. Each dictionary in the list contains the brand, number of reviews, and name of a beauty product on Sephora.com. 💄

👇 Tasks

  1. Use a for loop to find the average number of reviews of Laneige products (products where "brand" is "Laneige").
  2. Store the result to a new variable named avg_num_reviews.

📤 Expected Output

Laneige products have 6084.0 reviews on average.
my_products = [
    {"brand": "Laneige", "num_reviews": 12715, "name": "Lip Sleeping Mask"},
    {"brand": "The Ordinary", "num_reviews": 2274, "name": "Hyaluronic Acid 2% + B5"},
    {"brand": "Laneige", "num_reviews": 2771, "name": "Water Sleeping Mask"},
    {"brand": "The Ordinary", "num_reviews": 3952, "name": "Niacinamide 10% + Zinc 1%"},
    {
        "brand": "Chanel",
        "num_reviews": 528,
        "name": "CHANCE EAU TENDRE Eau de Toilette",
    },
    {"brand": "Laneige", "num_reviews": 2766, "name": "Lip Glowy Balm"},
    {"brand": "Chanel", "num_reviews": 724, "name": "COCO MADEMOISELLE Eau de Parfum"},
]

# YOUR CODE BEGINS

# YOUR CODE ENDS

print(f"Laneige products have {avg_num_reviews} reviews on average.")

🧭 Check Your Work

Run the code cell below to test your solution.

  • ✔️ If the code cell runs without errors, you’re good to move on.
  • ❌ If the code cell produces an error, review your code and fix any mistakes.
_test_case = "average-number-of-reviews-using-a-for-loop"
_points = 10
_obfuscate = False

tc.assertAlmostEqual(avg_num_reviews, 6084)

🎯 Challenge 2: Average Number of Reviews using a Function

Let’s make your logic from the previous question reusable by creating a function.

👇 Task

Create a function named get_avg_num_reviews() that returns the average number of reviews of products for a given brand.

The get_avg_num_reviews function takes the following two parameters:

  1. products - This is a list of dictionaries. Each dictionary in the list contains the brand, number of reviews, and name of a beauty product.
  2. brand - This is a string value containing the brand name (e.g., 'Laneige').

If there is no matching brand in the products list, return -1.

💡 Example

get_avg_num_reviews(my_products, "Laneige") should return the average number of reviews of Laneige products in my_products list.

📤 Expected Output

6084.0
3113.0
-1
626.0
11923.0
-1
my_products = [
    {"brand": "Laneige", "num_reviews": 12715, "name": "Lip Sleeping Mask"},
    {"brand": "The Ordinary", "num_reviews": 2274, "name": "Hyaluronic Acid 2% + B5"},
    {"brand": "Laneige", "num_reviews": 2771, "name": "Water Sleeping Mask"},
    {"brand": "The Ordinary", "num_reviews": 3952, "name": "Niacinamide 10% + Zinc 1%"},
    {
        "brand": "Chanel",
        "num_reviews": 528,
        "name": "CHANCE EAU TENDRE Eau de Toilette",
    },
    {"brand": "Laneige", "num_reviews": 2766, "name": "Lip Glowy Balm"},
    {"brand": "Chanel", "num_reviews": 724, "name": "COCO MADEMOISELLE Eau de Parfum"},
]
your_products = [
    {"brand": "NARS", "num_reviews": 11923, "name": "Radiant Creamy Concealer"}
]


# YOUR CODE BEGINS

# YOUR CODE ENDS

print(get_avg_num_reviews(my_products, "Laneige"))
print(get_avg_num_reviews(my_products, "The Ordinary"))
print(
    get_avg_num_reviews(my_products, "Sulwhasoo")
)  # edge case - no matching brand, should return -1
print(get_avg_num_reviews(my_products, "Chanel"))
print(get_avg_num_reviews(your_products, "NARS"))
print(
    get_avg_num_reviews([], "First Aid Beauty")
)  # edge case - empty, should return -1

🧭 Check Your Work

Run the code cell below to test your solution.

  • ✔️ If the code cell runs without errors, you’re good to move on.
  • ❌ If the code cell produces an error, review your code and fix any mistakes.
_test_case = "average-price-of-sneakers-using-a-function"
_points = 15
_obfuscate = False

tc.assertAlmostEqual(get_avg_num_reviews(my_products, "Laneige"), 6084.0)
tc.assertAlmostEqual(get_avg_num_reviews(my_products, "The Ordinary"), 3113.0)
tc.assertAlmostEqual(get_avg_num_reviews(my_products, "Chanel"), 626.0)
tc.assertAlmostEqual(get_avg_num_reviews(my_products, "JLo Beauty"), -1)
tc.assertAlmostEqual(get_avg_num_reviews(your_products, "NARS"), 11923.0)
tc.assertAlmostEqual(get_avg_num_reviews([], "First Aid Beauty"), -1)