Learn Interfaces by Building an Equation Solver - Step 15

Tell us what’s happening:

I can’t seem to identify the error. How else should the expression be?

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"'{self.__class__.__name__}' object takes {self.degree + 1} positional arguments but {len(args)} were given"
            )

# User Editable Region

        
            if any(not isinstance(arg, (int, float)) for arg in args):
                raise TypeError("Coefficients must be of type 'int' or 'float'")

# 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/131.0.0.0 Safari/537.36

Challenge Information:

Learn Interfaces by Building an Equation Solver - Step 15

Welcome to the forum @Mujtaba19

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 a stray part of the for loop after the if statement.

Please reset the code to restore the seed code and try again.

Happy coding

Hi and welcome :wave:

I think you need to check your indentation. Should be at the same level as the previous if or where the for loop started.

Thanks. I have seen the error

2 Likes