Open Tbaraka opened 7 months ago
import numpy as np
class Student: def init(self, name, scores): self.name = name if isinstance(scores, list) and all(isinstance(score, (int, float)) for score in scores): self.scores = scores else: self.scores = [scores]
def grade(self): avg = np.mean(self.scores) if avg >= 90: return 'A' elif avg >= 80: return 'B' elif avg >= 70: return 'C' elif avg >= 60: return 'D' else: return 'F'
def grade_analysis(students): grade_dist = {'A': 0, 'B': 0, 'C': 0, 'D': 0, 'F': 0} total_score = 0 top_performers = []
for student in students: grade = student.grade() grade_dist[grade] += 1 total_score += np.mean(student.scores) if np.mean(student.scores) >= 85.0: top_performers.append(student.name) avg_score = total_score / len(students) return grade_dist, avg_score, top_performers
students = [Student('John', 85), Student('Jane', 75), Student('Mike', [92]), Student('Sara', [60]),Student('Ian', [59]),Student('Teddy', [50]),Student('Ken', [65])]
grade_dist, avg_score, top_performers = grade_analysis(students)
print("Grade distribution:") for grade, count in grade_dist.items(): print(f"{grade}: {count}")
print(f"\nAverage score: {avg_score:.2f}") print(f"Top performers (above 85%): {', '.join(top_performers)}")
import numpy as np
class Student: def init(self, name, scores): self.name = name if isinstance(scores, list) and all(isinstance(score, (int, float)) for score in scores): self.scores = scores else: self.scores = [scores]
def grade_analysis(students): grade_dist = {'A': 0, 'B': 0, 'C': 0, 'D': 0, 'F': 0} total_score = 0 top_performers = []
students = [Student('John', 85), Student('Jane', 75), Student('Mike', [92]), Student('Sara', [60]),Student('Ian', [59]),Student('Teddy', [50]),Student('Ken', [65])]
grade_dist, avg_score, top_performers = grade_analysis(students)
print("Grade distribution:") for grade, count in grade_dist.items(): print(f"{grade}: {count}")
print(f"\nAverage score: {avg_score:.2f}") print(f"Top performers (above 85%): {', '.join(top_performers)}")