Loading...
Loading...
Build a grade calculator that processes a list of scores
Build a grade calculator that processes a list of student scores and produces a full report. You'll use lists, loops, accumulators, conditionals, functions, and dictionaries.
Write a program that:
- The average score (sum / count)
- The highest score
- The lowest score
- How many scores are passing (>= 70)
- How many are excellent (>= 90)
- calc_average(scores) — returns the mean score
- find_highest(scores) — returns the max score
- count_passing(scores) — returns count of scores >= 70
- grade_to_letter(score) — returns "A", "B", "C", or "F"
scores = [85, 92, 78, 95, 88, 72, 91, 84]
# Define your functions here
# Generate the report
print("=== Grade Report ===\n")
# Your code here=== Grade Report ===
Average score: 85.6
Highest score: 95
Lowest score: 72
Passing (>=70): 8/8
Excellent (>=90): 3/8
Grade Breakdown:
85 → B
92 → A
78 → C
95 → A
88 → B
72 → C
91 → A
84 → Bscores = [85, 92, 78, 95, 88, 72, 91, 84]
def calc_average(scores):
return sum(scores) / len(scores)
def find_highest(scores):
highest = scores[0]
for s in scores:
if s > highest:
highest = s
return highest
def find_lowest(scores):
lowest = scores[0]
for s in scores:
if s < lowest:
lowest = s
return lowest
def count_passing(scores):
count = 0
for s in scores:
if s >= 70:
count += 1
return count
def count_excellent(scores):
count = 0
for s in scores:
if s >= 90:
count += 1
return count
def grade_to_letter(score):
if score >= 90:
return "A"
elif score >= 80:
return "B"
elif score >= 70:
return "C"
else:
return "F"
print("=== Grade Report ===\n")
print(f"Average score: {calc_average(scores):.1f}")
print(f"Highest score: {find_highest(scores)}")
print(f"Lowest score: {find_lowest(scores)}")
print(f"Passing (>=70): {count_passing(scores)}/{len(scores)}")
print(f"Excellent (>=90): {count_excellent(scores)}/{len(scores)}")
print("\nGrade Breakdown:")
for s in scores:
print(f" {s} \u2192 {grade_to_letter(s)}")