программа на python для перегрузки оператора '==' для вывода сведений о студентах с одинаковыми оценками - PullRequest
0 голосов
/ 30 января 2019

Здесь я должен создать ученика со следующими атрибутами участника: номер броска, имя, возраст и итоговые оценки.Создайте подходящие методы для чтения и печати переменных-членов, а также перегрузите оператор '==' для печати сведений о студентах, имеющих одинаковые оценки.Здесь я не могу найти способ перегрузить оператор == для отметок.Здесь я получил ошибку.

class Student():


    def __init__(self,r_no,name,age,marks):
        self.r_no = r_no
        self.name = name
        self.age = age
        self.marks = marks


    def displayStudent(self):
        print ("Roll no : ", self.r_no, "Name : ", self.name,  ", Age: ", self.age,  ", Marks: ", self.marks)


    def __str__(self):
        return "({0},{1},{3},{4})".format(self.r_no,self.name,self.age,self.marks)

    def __eq__(self,other):
        if(self.marks==other.marks):
            return self.marks==other.marks


stu = []

for i in range (1,3):
    print("Enter Details for Students %d" % (i))
    r_no = int(input("Enter Roll no:"))
    name = input("Enter Name:")
    age = int(input("Enter Age:"))
    marks = input("Enter Marks:")
    stu.append(Student(r_no,name,age,marks))



for s in stu:
    s.displayStudent()

Ответы [ 2 ]

0 голосов
/ 04 августа 2019

Снимок кода

Вместо def __eq__ необходимо использовать условие if, например

if(stu[0].marks==stu[1].marks):
      print("marks of ",stu[0].name,"&",stu[1].name," is same")
else:
      print("not same")

Или, если у вас есть больше данныхкроме двух учеников, вы также можете использовать цикл for.Для получения более подробной информации, посмотрите изображение, которое я связал вверху.

0 голосов
/ 30 января 2019

Чтобы сообщить, что два студента равны, учитывая, что они имеют одинаковые оценки, функция __eq__ должна выглядеть следующим образом:

def __eq__(self, other):
    return self.marks == other.marks

Возвращает True, если оценки совпадают, и False в противном случае

Затем этот код возвращает True и False соответственно.

print(Student(1, 'test1', 20, 4) == Student(2, 'test2', 30, 4))  # True
print(Student(3, 'test3', 0, 1) == Student(3, 'test3', 0, 2))  # False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...