Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ab002e4

Browse files
OOP Project
1 parent fcdea08 commit ab002e4

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
class Student:
2+
def __init__(self,name,scores) -> None:
3+
self.name = name
4+
self.scores = scores
5+
6+
def calculate_average(self) -> int:
7+
if len(self.scores) > 0:
8+
return sum(self.scores) / len(self.scores)
9+
return 0
10+
11+
def is_passing(self,passing = 40):
12+
average = self.calculate_average()
13+
return average >= passing
14+
15+
16+
class Performance_tracker:
17+
def __init__(self) -> None:
18+
self.students_record = {}
19+
20+
def add_students(self):
21+
while True:
22+
try:
23+
student_name = input("\nEnter student name (or type stop to stop) : ").lower().strip()
24+
if student_name == "stop":
25+
break
26+
grades = input("Enter marks in 3 subjects (math , science and English respectively) Ensure their is space in it : ").strip()
27+
student_grades = [int(grade) for grade in grades.split()]
28+
29+
if student_name in self.students_record:
30+
self.students_record[student_name].scores = student_grades
31+
else:
32+
self.students_record[student_name] = Student(student_name,student_grades)
33+
34+
print(f"Updated dictionary : {self.get_students_data()}")
35+
36+
37+
except ValueError :
38+
print("Please enter a Valid Marks")
39+
except Exception as error :
40+
print(error)
41+
42+
def calculate_class_average(self):
43+
total_scores = []
44+
for i in self.students_record.values():
45+
total_scores.extend(i.scores)
46+
average = sum(total_scores) / len(total_scores)
47+
print(f"Class Average : {average:.2f}")
48+
49+
def display_student_performance(self):
50+
for student in self.students_record.values():
51+
average = student.calculate_average()
52+
passing = f"PASS" if student.is_passing() else "FAIL"
53+
print(f"{student.name} : Average : {average:.2f} , Status : {passing}")
54+
55+
def get_students_data(self):
56+
return {name: student.scores for name, student in self.students_record.items()}
57+
58+
59+
tracker = Performance_tracker()
60+
tracker.add_students()
61+
tracker.display_student_performance()
62+
tracker.calculate_class_average()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /