Задание по Python.
Условие : Создайте класс числа Numbers, который дает информацию, кратно ли данное число 2, 3 и 4. Вывести информацию о кратности объекта числам 2, 3 и 4 в виде таблицы. Создать методы сравнения двух объектов-чисел, используя магические методы для логических операций. Решить задачу с подробными комментариями , ответ должен быть В ВИДЕ ТАБЛИЦЫ.
Доработайте программу( дописать программу, написать подробные комментарии) :
class Numbers():
def _init_ (self,ch):
self. ch=ch
def kratn(self):
rez2="False"
rez3="False"
rez4="False"
rez_vsex="False"
if self.ch%2==0:
rez2= "True"
if self.ch%3==0:
rez3= "True"
if self. ch%4==0:
rez4= "True"
if(self.ch%2==0) and (self.ch%3==0) and (self.ch%4==0) :
rez_vsex= "True"
print(' наше число', self.ch)
print('{:^8}{:^8{:^8}{:^8}'.format('кратно2','кратно3','кратно4','кратновсему',)
print('{:^8}{:^8{:^8}{:^8}'.format(rez2,rez3,rez4,rez_vsex))
def _qt_(self,other):
if self.ch>=other.ch:
return 'Первое число больше второго'
else:
return 'Первое число не больше второго'
def _ge_ (self,other):
if self.ch>=other.ch:
return 'Первое число больше или равно второму'
else:
return 'Первое число не больше или равно второму'
n1=Numbers(12)
print(n1._dict_)
n1.kratn()
n2=Numbers(10)
print(n2._dict_)
n2.kratn()
print(n1>n2)
print(n1>=n2)
Напишите:
атрибуты (статические и динамические),
методы,
принципы ООП, которые вы использовали при разработке программы (абстракция, инкапсуляция, полиморфизм, наследование),
уровни доступа к атрибутам и методам (public, protected, private) .
Ответы
Ответ:
В данной программе класс Numbers имеет один динамический атрибут ch, который передается при создании экземпляра класса. Также класс содержит метод kratn(), который выводит информацию о том, кратно ли число 2, 3 и 4, и методы сравнения объектов-чисел с помощью магических методов gt() и ge().
В разработке программы использованы следующие принципы ООП:
Абстракция: класс Numbers представляет собой абстракцию чисел, которые можно проверить на кратность.
Инкапсуляция: атрибут ch является динамическим и доступен только внутри класса Numbers. Метод kratn() также использует этот атрибут и не имеет внешних зависимостей.
Полиморфизм: методы сравнения gt() и ge() позволяют сравнивать экземпляры класса Numbers между собой и с другими числами.
Наследование: в данной программе не используется наследование.
Атрибут ch является динамическим, так как он задается при создании экземпляра класса. Метод kratn() не изменяет значение атрибута ch и является безопасным для использования.
В данной программе используется уровень доступа public, так как атрибут и методы класса доступны извне и не имеют ограничений на доступ.
Исправленный код с комментариями и таблицей:
python
Copy code
class Numbers:
# конструктор класса, принимающий один динамический атрибут ch
def __init__(self, ch):
self.ch = ch
# метод, выводящий информацию о кратности числа 2, 3 и 4
def kratn(self):
# инициализация переменных значениями "False"
rez2 = "False"
rez3 = "False"
rez4 = "False"
rez_vsex = "False"
# проверка кратности числа 2
if self.ch % 2 == 0:
rez2 = "True"
# проверка кратности числа 3
if self.ch % 3 == 0:
rez3 = "True"
# проверка кратности числа 4
if self.ch % 4 == 0:
rez4 = "True"
# проверка кратности числа 2, 3 и 4
if (self.ch % 2 == 0) and (self.ch % 3 == 0) and (self.ch % 4 == 0):
rez_vsex = "True"
# вывод таблицы
print(' Наше число: ', self.ch)
print('{:^8}{:^8}{:^8}{:^8}'.format('Кратно 2', 'Кратно
Объяснение:
можно лучший ответ пожалуйста?