marks = {"ENG4U": 84, "MHF4U": 91, "MCV4U": 88, "ICS4U": 95,
"SPH4U": 79, "SCH4U": 82, "MDM4U": 90, "CHY4U": 86}
def admission_average(marks, required, count=6):
missing = [c for c in required if c not in marks]
if missing:
return None, missing
chosen = [marks[c] for c in required]
others = sorted((m for c, m in marks.items() if c not in required), reverse=True)
chosen += others[:count - len(required)]
return round(sum(chosen) / count, 1), []
print(admission_average(marks, ["ENG4U", "MHF4U", "MCV4U"]))
print(admission_average(marks, ["ENG4U", "MHF4U", "MCV4U", "SCH4U", "SPH4U"]))
print(admission_average({"ENG4U": 90, "MHF4U": 85}, ["ENG4U", "MHF4U", "MCV4U"]))
The second line uses engineering-style requirements; the third shows a missing prerequisite.