# Learn Interfaces by Building an Equation Solver - Step 36

### Tell us what’s happening:

The output on the console looks fine but the code is not passing to the next step I don’t know why!

``````from abc import ABC, abstractmethod
import re

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")
self.coefficients = {(len(args) - n - 1): arg for n, arg in enumerate(args)}

def __init_subclass__(cls):
if not hasattr(cls, "degree"):
raise AttributeError(
f"Cannot create '{cls.__name__}' class: missing required attribute 'degree'"
)

def __str__(self):
terms = []
for n, coefficient in self.coefficients.items():
if not coefficient:
continue
if n == 0:
terms.append(f'{coefficient:+}')
elif n == 1:
terms.append(f'{coefficient:+}x')
else:
terms.append(f"{coefficient:+}x**{n}")
equation_string = ' '.join(terms) + ' = 0'

# User Editable Region

return re.sub(r'1(?=x)', '', equation_string.strip('+'))

# User Editable Region

@abstractmethod
def solve(self):
pass

@abstractmethod
def analyze(self):
pass

class LinearEquation(Equation):
degree = 1

def solve(self):
a, b = self.coefficients.values()
x = -b / a
return x

def analyze(self):
slope, intercept = self.coefficients.values()
return {'slope': slope, 'intercept': intercept}

degree = 2

def __init__(self, *args):
super().__init__(*args)
a, b, c = self.coefficients.values()
self.delta = b**2 - 4 * a * c

def solve(self):
pass

def analyze(self):
pass

lin_eq = LinearEquation(2, 3)
print(lin_eq)

``````

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36`

### Challenge Information:

Learn Interfaces by Building an Equation Solver - Step 36

Here is a comparison of the original code and your code.

The code in blue is the original code, the code in red is your code.
The code in magenta is the overlap.

You appear to have altered the seed code.
Please reset the step to restore the original code, then add the positive lookahead to the regex pattern.

Happy coding

Thank you so much for your response, But I am still a little bit confused!

1 Like

Do not remove anything before `1`