Challenge 2: CSV Average Score — Possible Solution ==================================================================== import csv with open("scores.csv", "r", newline="") as f: reader = csv.DictReader(f) scores = [int(row["score"]) for row in reader] average = sum(scores) / len(scores) print(average) Output (using the scores.csv from this chapter's own example — Alice 90, Bob 85): 87.5 WHY THIS WORKS AS AN ANSWER ------------------------------ csv.DictReader(f) reuses this chapter's own DictReader example directly — each row comes back as a dict keyed by the header row's column names, so row["score"] reads the score column by name rather than by numeric position. int(row["score"]) is the necessary extra step this challenge's own hint calls out: every value read from a CSV file (via csv.reader or csv.DictReader) comes back as a plain string, even a column that looks numeric — "90", not 90. Wrapping it in int() converts it to a real integer, reusing the int() casting covered back in Course 1, Chapter 2, before any arithmetic can be done with it correctly. [int(row["score"]) for row in reader] reuses the list comprehension pattern from Course 1/Course 2's comprehension chapters to build the full list of converted scores in one line while iterating the reader. sum(scores) / len(scores) then reuses the exact same average-of-a-list pattern as Course 1, Chapter 9's average(*args) solution — summing every score and dividing by how many there are — just sourced from a CSV file's column instead of function arguments.