Tell us what’s happening:
So I know that I’m supposed to reverse ‘degree’ so everything comes out right but I can’t actually figure out how to do that, and so far I’ve tried slicing, .reverse, and reverse().
Also on a side note, I’ve been kind of struggling to understand how some of the back-end and data-structure projects work in a way where it’s hard for me to think about how indexes, for loops, errors, and returns work, since they’re hard for me to visualize and also confusing as to what each line of code is doing.
Your code so far
from abc import ABC, abstractmethod
class Equation(ABC):
degree: int
def __init__(self, *args):
if (self.degree + 1) != len(args):
raise TypeError(
f"'Equation' object takes {self.degree + 1} positional arguments but {len(args)} were given"
)
if any(not isinstance(arg, (int, float)) for arg in args):
raise TypeError("Coefficients must be of type 'int' or 'float'")
if args[0] == 0:
raise ValueError("Highest degree coefficient must be different from zero")
# User Editable Region
self.coefficients = dict({degree : coeff for degree, coeff in reversed(tuple(enumerate(reversed(args))))})
# User Editable Region
def __init_subclass__(cls):
if not hasattr(cls, "degree"):
raise AttributeError(
f"Cannot create '{cls.__name__}' class: missing required attribute 'degree'"
)
@abstractmethod
def solve(self):
pass
@abstractmethod
def analyze(self):
pass
class LinearEquation(Equation):
degree = 1
def solve(self):
pass
def analyze(self):
pass
lin_eq = LinearEquation(2, 3)
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
Challenge Information:
Learn Interfaces by Building an Equation Solver - Step 17