Hỏi về class trong python

e mới học về class các sếp cho e hỏi tí.
Đây là đoạn code e viết để tính điểm trung bình môn học, nhưng mà đến phần tính điểm trung bình chung của học sinh:
Diemtbhs = (Diemtb toán + Diemtb Lý + Diemtb Hóa)/3 thì e ko biết phải làm như thế nào.

Up code lên đi bạn. Nhớ bỏ code vào markdown nhé.

Lần sau screenshot nhớ resize hình cho vừa với size của screenshot. Để phần trắng to thế kia thì khó nhìn lắm.


Đề bài bảo gì thì bạn lắp luôn công thức vào thôi chứ có gì đâu.

Gợi ý:

  • Bạn đang thể hiện mỗi môn trên code của bạn như thế nào? Qua class gì? Các thuộc tính của class đó gì?

  • Làm thế nào để lấy ra điểm trung bình của mỗi môn? Lấy qua thuộc tính/method nào?

1 Like

nếu lắp công thức vào thì đơn giản nhưng như vậy e thấy nó dài dòng với cảm giác như ko đc khoa học.
Ý e là có cách nào mà thực hiện được theo kiểu:
Diemtbhs = (Toan.diemtb + Ly.diemtb + Hoa.diemtb)/3 không?
ý là trích xuất thuộc tính điểmtb của class Subject ấy. Nhưng mà Toan, Ly, Hoa lại là biến của hàm thôi nên e ko trích xuất đc thuộc tính diemtb. hjc

Bạn đăng code lên đi. Mình không muốn type lại đâu :sweat:

2 Likes

Điều cần làm trước hết là bạn up ngay code lên bằng markdown cho mọi người có thể dễ dàng theo dõi, hơn nữa ai muốn giúp bạn lại phải hì hục gõ lại code của bạn à. No code no help. Thân

thanks, e cũng mới vào diễn đàn hôm qua nên cũng chưa rõ, để e xem bài hướng dẫn, còn code của e đây

No screenshot only, please

Ok bác e đang nghiên cứu cái markdown

class Subject:
    "Day la class the hien mon hoc"

    def __init__(self, diemchuyencan, diemheso1, diemthi):
        self.diemchuyencan = diemchuyencan
        self.diemheso1 = diemheso1
        self.diemthi = diemthi
        self.diemtbmon = self.diemchuyencan * 0.1 + \
            self.diemheso1 * 0.3 + self.diemthi * 0.6
        print(self.diemtbmon)


def monhoc(mon):
    mon = Subject(int(input('Moi ban nhap diem chuyen can mon %r: ' % (mon))), int(input(
        'Moi ban nhap diem he so 1 mon %r: ' % (mon))), int(input('Moi ban nhap diem thi mon %r: ' % (mon))))


monhoc('toan')
monhoc('Ly')
monhoc('Hoa')
1 Like

thế này có được chưa các sếp

1 Like

Môn bạn lưu ở đâu đấy

1 Like

Thì bạn return cái môn của bạn ra là được mà.

def create_subject(name):
    return Subject(...)

toan = create_subject('toan')
...

Đừng print(self.diemtbmon) trong __init__. Hãy vứt nó sang chỗ khác.

2 Likes

Môn trong cái hàm monhoc đó sếp

thanks. để e thử phát

Ok, return biến mon ra là được mà

thanks bác, e đang thử, mới học thấy khó sml

class Subject:
    "Day la class the hien mon hoc"

    def __init__(self, diemchuyencan, diemheso1, diemthi):
        self.diemchuyencan = diemchuyencan
        self.diemheso1 = diemheso1
        self.diemthi = diemthi
        self.diemtbmon = self.diemchuyencan * 0.1 + \
            self.diemheso1 * 0.3 + self.diemthi * 0.6


# def monhoc(mon):
    # mon = Subject(int(input('Moi ban nhap diem chuyen can mon %r: ' % (mon))), int(input(
        #'Moi ban nhap diem he so 1 mon %r: ' % (mon))), int(input('Moi ban nhap diem thi mon %r: ' % (mon))))

def create_subject(name):
    return Subject(int(input('Moi ban nhap diem chuyen can mon %r: ' % (name))), int(input(
        'Moi ban nhap diem he so 1 mon %r: ' % (name))), int(input('Moi ban nhap diem thi mon %r: ' % (name))))


Toan = create_subject('Toan')
Ly = create_subject('Ly')
Hoa = create_subject('Hoa')

diemtbhs = (Toan.diemtbmon + Ly.diemtbmon + Hoa.diemtbmon)/3

print('Diem TB cua hoc sinh la: ',diemtbhs)

thanks các bác e làm được rồi, đúng là cái món lập trình này ý tưởng chắc là quan trọng nhất r. Cũng nghĩ đến return rồi mà ko nghĩ ra đc là làm như thế này. hjc

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?