โปรแกรมรับคะแนน 5 วิชา คำนวณรวม เปอร์เซ็นต์ เกรด และผลสอบ (ผ่าน/เงื่อนไข/ไม่ผ่าน)
เกณฑ์การให้เกรด
| คะแนนเฉลี่ย | เกรด |
|---|---|
| >= 90 | O |
| >= 80 | A+ |
| >= 70 | A |
| >= 60 | B+ |
| >= 50 | B |
| >= 40 | C |
| < 40 | F |
เกณฑ์ผลสอบ
- ทุกวิชา >= 40 → PASS
- ผ่าน >= 3 วิชา → COMP (เงื่อนไข)
- อื่นๆ → FAIL
โค้ด (ปรับปรุงให้รันได้อัตโนมัติ ไม่ต้อง input)
class GradeCalculator:
def __init__(self, roll, name, marks):
self.roll = roll
self.name = name
self.marks = marks
self.total = 0
self.percentage = 0
self.grade = ""
self.result = ""
def calculate(self):
self.total = sum(self.marks)
self.percentage = self.total / len(self.marks)
if self.percentage >= 90: self.grade = "O"
elif self.percentage >= 80: self.grade = "A+"
elif self.percentage >= 70: self.grade = "A"
elif self.percentage >= 60: self.grade = "B+"
elif self.percentage >= 50: self.grade = "B"
elif self.percentage >= 40: self.grade = "C"
else: self.grade = "F"
passed = sum(1 for m in self.marks if m >= 40)
if passed == len(self.marks): self.result = "PASS"
elif passed >= 3: self.result = "COMP"
else: self.result = "FAIL"
def display(self):
print(f"Roll: {self.roll}\tName: {self.name}\tTotal: {self.total}\t"
f"%: {self.percentage:.1f}\tGrade: {self.grade}\tResult: {self.result}")
# ทดสอบ
student = GradeCalculator(3, "Raj", [86, 75, 69, 55, 92])
student.calculate()
student.display()
# Roll: 3 Name: Raj Total: 377 %: 75.4 Grade: A Result: PASS
สรุป
โครงสร้าง class แยกหน้าที่ชัดเจน สามารถขยายฟีเจอร์ได้ง่าย