Unit 5 · Lesson 4

Functions + Collections

Combine functions with lists and dicts.

Pass lists/dicts as parameters
Return collections
Build utility toolkit
Design composable functions

Functions That Process Collections

def average(numbers): return sum(numbers) / len(numbers) print(average([90,85,92])) # 89.0

Returning New Collections

def filter_passing(grades, threshold=70): return [g for g in grades if g >= threshold]
Build a toolkit! Small, focused functions that each do one thing well.
Practice Time

Challenges

📊

Challenge 1: Stats Toolkit

Guided

Write mean() and median().

Instructions: mean(nums) returns average. median(nums) returns middle value (avg of two middles for even length).
Hint: mean: sum/len. median: sort copy, pick middle or average two middles.
🔽

Challenge 2: Filter Function

Guided

Filter students by minimum grade.

Instructions: filter_passing(students, min_grade) returns list of names with grade >= min_grade.
Hint: Loop, if s["grade"] >= min_grade, append s["name"].
🔀

Challenge 3: Merge Contacts

Solo

Merge two dicts, second overrides.

Instructions: merge(dict1, dict2) returns NEW dict with all keys. dict2 wins on conflicts.
Hint: Start with empty dict, add all from dict1, then all from dict2.
📚

Challenge 4: Mini Gradebook

Stretch

Build gradebook management functions.

Instructions: Write create_gradebook(), add_student(gb,name), add_grade(gb,name,grade), get_average(gb,name).
Hint: create returns {}. add_student: gb[name]=[]. add_grade: gb[name].append(grade). get_average: sum/len.