# Learn Interfaces by Building an Equation Solver - Step 44

### Tell us what’s happening:

i’m confused on the vertex part line 78 the value part of both dictionaries i’m confused on the fact is says using the formula you should put that as your value but, idk how to put x = b/2a as value

``````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'
return re.sub(r"(?<!\d)1(?=x)", "", equation_string.strip("+"))

@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):
if self.delta < 0:
return []
a, b, _ = self.coefficients.values()
x1 = (-b + (self.delta) ** 0.5) / (2 * a)
x2 = (-b - (self.delta) ** 0.5) / (2 * a)
if self.delta == 0:
return [x1]

return [x1, x2]

# User Editable Region

def analyze(self):
return {'x': x=-b/2a, 'y': y}

# User Editable Region

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

``````

User Agent is: `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36`

### Challenge Information:

Learn Interfaces by Building an Equation Solver - Step 44

Hello,
to solve this first begin by getting the three values a, b and c that construct your equation using `self.coefficients.values()`, then create a variable called x and assign -b/2a to it but for a computer if you say
`k = -b/2a`, it will not understand what `2a` means, you need to add `*` to the operation and even if you do that, the computer will interpret it as `-b*a/2`, you need to use `()` on `2*a`
in Math, the value of y is the equation itself which means `ax²+bx+c` just convert it to Python code, you should also create a variable called y that holds this value
finally create a dictionary with two keys, ‘x’ and ‘y’ with each containing the variables you previously created `x` and `y`

1 Like

Everything you need to completed this you’ve done in previous steps.

Look in the code that you’ve completed above for clues of how to solve this.

Hint: Where do the `a` and `b` variables come from?

1 Like