Перегрузка операторов
Написать класс для работы с простыми дробями.
Дробь вида 2/3 задается как Drob(2, 3).
Обратите внимание: результат сложения 1/2 + 1/6 = 3/6 + 1/6 = 4/6 = 2/3. Дроби нужно упрощать.
Статические методы
Написать класс Student, который читает данные студентов по формату
Мьянма: имя, физика, математика, русский
Остальные: имя, оценки через запятую
Мьянма, пример:
4
Alex, 10, 8, 7
Liza, 5, 0, 0
Taty, 7, 0, 3
Mike, 3, 10, 5
Остальные, пример:
4
Alex, 10, 8, 7
Liza, 5
Taty, 7, 3
Mike, 3, 10, 5, 6, 8
Две задачи. В первой задаче нужно у каждого студента напечатать характеристику.
Мьянма
Вариант | Характеристика | Отсортировать |
1 | среднее арифметическое | по убыванию |
2 | минимальная оценка | по возрастанию |
3 | максимальная оценка | по убыванию |
4 | сколько 0 ("хвостов") | по убыванию |
5 | сколько сдано зачетов | по возрастанию |
Остальные
class Drob:
def __init__(self, a, b):
self.a = a
self.b = b
self.normalize()
def normalize(self):
k = Drob.nod(self.a, self.b)
self.a = self.a // k
self.b = self.b // k
def __repr__(self):
return f'{self.a} / {self.b}'
def __add__(self, other):
a1 = self.a
b1 = self.b
a2 = other.a
b2 = other.b
return Drob(a1*b2 + a2*b1, b1*b2)
def __lt__(self, other):
a1 = self.a
b1 = self.b
a2 = other.a
b2 = other.b
if a1 * b2 < a2 * b1:
return True
else:
return False
# return a1 * b2 < a2 * b1
@staticmethod
def nod(a, b):
while True:
res = a % b
if res == 0:
return b
# a, b = b, res
a = b
b = res
@staticmethod
def readDrob(s):
# делает дробь из строки вида '3/4'
# возвращает дробь
print(s, type(s))
a, b = map(int, s.split('/'))
return Drob(a, b)
def test():
d1 = Drob(1, 2)
print(d1)
d2 = Drob(3, 4)
print(d2)
d = d1 + d2 # d = d1.__add__(d2) ==> d = Drob.__add__(d1, d2)
print(f'{d} = {d1} + {d2}')
if d1 < d2:
print(f'{d1} less then {d2}')
a = [Drob(1, 2), Drob(3, 4), Drob(1, 5), Drob(2, 5)]
print(a)
dmin = min(a)
print(f'minimum: {dmin}')
b = sorted(a)
print(b)
def test2():
words = input().split()
a = []
for w in words:
d = Drob.readDrob(w)
a.append(d)
print(a)
print(sorted(a))
test2()
--
TatyanaDerbysheva - 07 May 2019