Stack Overflow на русском Asked on November 13, 2021
Опишите класс Calculator, который будет реализовывать следующие методы и поля:
sum(self, a, b)
– сложение чисел a и b
sub(self, a, b)
– вычитание
mul(self, a, b)
– умножение
div(self, a, b, mod=False)
– деление.
Если параметр mod == True
, то метод должен возвращать остаток от деления вместо деления. По умолчанию mod=False
.
history(self, n)
– этот метод должен возвращать строку с операцией по ее номеру относительно текущего момента (1 – последняя, 2 – предпоследняя). Формат вывода: sum(5, 15) == 20
(ОБРАТИТЕ ВНИМАНИЕ: В ВИДЕО ЗАДАНИЕ БЫЛО ОЗВУЧЕНО ПО-ДРУГОМУ! Для прохождения тестов МЕТОД ДОЛЖЕН ВОЗВРАЩАТЬ ЗНАЧЕНИЕ, А НЕ ВЫВОДИТЬ ЕГО НА ЭКРАН)
last
– строка того же формата, что в предыдущем пункте, в которой содержится информация о последней операции по всем созданным объектам калькулятора. Т.е. это последняя операция последнего использованного объекта калькулятор. Если операций пока не было, то None.
clear(cls)
– метод, который очищает last, т.е. присваивает ему значение None.
Формат вывода
При сохранении строк в history и last нужно выводить только один знак после запятой дробного числа. При выполнении деления с mod сам параметр mod не нужно записывать в лог.
Примечания
В конец файла добавьте строки:
from classes1_tests import Test
Test(Calculator).run_all()
Таким образом, в коде программы должно быть только описание класса и эти две строки.
Программа:
class Calculator:
last = None
def __init__(self):
self.history_array = []
def sum(self, a, b):
self.history_array.append( a + b)
self.last = self.history_array[-1]
return a + b
def sub(self, a, b):
self.history_array.append( a - b)
self.last = self.history_array[-1]
return a - b
def mul(self, a, b):
self.history_array.append(a * b)
self.last = self.history_array[-1]
return a * b
def div(self, a, b, mod=False):
if mod:
self.history_array.append( a % b)
self.last = self.history_array[-1]
return a % b
else:
self.history_array.append(a / b)
self.last = self.history_array[-1]
return a / b
def history(self, n):
try:
result = self.history_array[-n]
except IndexError:
result = None
return result
def clear(self):
self.last = None
from classes1_tests import Test
Test(Calculator).run_all()
Вы присваиваете не классовой переменной last
, а переменной объекта: вам нужно вместо self.last
писать Calculator.last
. Вот так должно сработать:
class Calculator:
last = None
def __init__(self):
self.history_array = []
def sum(self, a, b):
self.history_array.append( a + b)
Calculator.last = self.history_array[-1]
return a + b
def sub(self, a, b):
self.history_array.append( a - b)
Calculator.last = self.history_array[-1]
return a - b
def mul(self, a, b):
self.history_array.append(a * b)
Calculator.last = self.history_array[-1]
return a * b
def div(self, a, b, mod=False):
if mod:
self.history_array.append( a % b)
Calculator.last = self.history_array[-1]
return a % b
else:
self.history_array.append(a / b)
Calculator.last = self.history_array[-1]
return a / b
def history(self, n):
try:
result = self.history_array[-n]
except IndexError:
result = None
return result
def clear(self):
Calculator.last = None
from classes1_tests import Test
Test(Calculator).run_all()
Answered by n1tr0xs on November 13, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP