report / app.py
frehman38's picture
Update app.py
c194160 verified
Raw History Blame Contribute Delete
1.88 kB
class Student:
def __init__(self, name, scores):
self.name = name
self.scores = scores
def calculate_average(self):
if len(self.scores) == 0:
return 0
return sum(self.scores) / len(self.scores)
def is_passing(self, passing_score=40):
return all(score >= passing_score for score in self.scores)
class PerformanceTracker:
def __init__(self):
self.students = {}
def add_student(self, name, scores):
self.students[name] = Student(name, scores)
def calculate_class_average(self):
total_scores = []
for student in self.students.values():
total_scores.extend(student.scores)
if len(total_scores) == 0:
return 0
return sum(total_scores) / len(total_scores)
def display_student_performance(self):
for name, student in self.students.items():
average = student.calculate_average()
passing = student.is_passing()
status = "Passing" if passing else "Needs Improvement"
print(f"Student: {name}, Average Score: {average:.2f}, Status: {status}")
class_avg = self.calculate_class_average()
print(f"\nClass Average Score: {class_avg:.2f}")
def main():
tracker = PerformanceTracker()
while True:
name = input("Enter student name (or type 'done' to finish): ")
if name.lower() == 'done':
break
try:
scores = []
for subject in ["Math", "Science", "English"]:
score = int(input(f"Enter score for {subject}: "))
scores.append(score)
tracker.add_student(name, scores)
except ValueError:
print("Invalid input. Please enter numeric values for scores.")
tracker.display_student_performance()
if __name__ == "__main__":
main()