from typing import Sequence def almostEqual(x, y): return abs(x - y) < 10**-9 def median(L: Sequence[float]) -> float | None: """Return the median of a sequence of numbers.""" L = list(L) if not len(L): return None L.sort() mid = len(L) // 2 if len(L) % 2 == 1: return L[mid] else: return (L[mid - 1] + L[mid]) / 2 print("Testing median()...", end="") assert median([42]) == 42 assert almostEqual(median([1, 2]), 1.5) assert median([-1.7, 3, -2, 4.2, 2]) == 2 assert median([2, 3, 2, 4, 2]) == 2 assert almostEqual(median([2, 3, 2, 4, 2, 3]), 2.5) assert median([]) == None # Verify function is non-mutating L = [1, 3, 2] assert median(L) == 2 assert L == [1, 3, 2] print("Passed!")