Learn Special Methods by Building a Vector Space - Step 52

Tell us what’s happening:

I have given the correct input and he is asking me to return as int and float now i am not sure how can i do that if anyone can help me then please do.

Your code so far

class R2Vector:
    def __init__(self, *, x, y):
        self.x = x
        self.y = y

    def norm(self):
        return sum(val**2 for val in vars(self).values())**0.5

    def __str__(self):
        return str(tuple(getattr(self, i) for i in vars(self)))

    def __repr__(self):
        arg_list = [f'{key}={val}' for key, val in vars(self).items()]
        args = ', '.join(arg_list)
        return f'{self.__class__.__name__}({args})'

    def __add__(self, other):
        if type(self) != type(other):
            return NotImplemented
        kwargs = {i: getattr(self, i) + getattr(other, i) for i in vars(self)}
        return self.__class__(**kwargs)

    def __sub__(self, other):
        if type(self) != type(other):
            return NotImplemented
        kwargs = {i: getattr(self, i) - getattr(other, i) for i in vars(self)}
        return self.__class__(**kwargs)

# User Editable Region

    def __mul__(self, other):
        if isintance(other, (int, float)):
            return

# User Editable Region

class R3Vector(R2Vector):
    def __init__(self, *, x, y, z):
        super().__init__(x=x, y=y)
        self.z = z

v1 = R2Vector(x=2, y=3)
v2 = R2Vector(x=0.5, y=1.25)
print(f'v1 = {v1}')
print(f'v2 = {v2}')
v3 = v1 + v2
print(f'v1 + v2 = {v3}')
v4 = v1 - v2
print(f'v1 - v2 = {v4}')

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 Special Methods by Building a Vector Space - Step 52

return a new instance of the current class that has each component of the starting vector multiplied by other

Each vector has 2 components

v1 = (2, 3)

You can see here how each component is added separately to add two vectors:

v1 = (2, 3)
v2 = (0.5, 1.25)
v1 + v2 = (2.5, 4.25)
2 + 0.5 = 2.5
3 + 1.25 = 4.25

Now do the same thing for multiplication, but for the single number that multiplies each component

Vectors can be multiplied by a scalar, i.e. a number that multiplies each single component.

v1 = (2, 3)
v1 * 2 = (4, 6)

ok but how can i do that should i replace my return line with multiplication of vector and add v1 * 2 = ( 4, 6)?

def __mul__(self, other):
        if isinstance(other, (int, float)):
            return self.__class__(**{i: getattr(self, i) * other for i in vars(self)})
        return NotImplemented

this is the code i have written can someone check and let me know which line i am getting the error its not reflecting in the website.

please format your code correctly, it is impossible to help you with malformatted code

I’ve edited your post to improve the readability of the code. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (</>) to add backticks around text.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (').

instead of isinstance, you need to check the type

??? how can i check the type of isinstance

why do you want to check the type of isinstance?

you are checking other here, you need to do in a different way

so i will remove isinstance from the coed and wil check if it passes or not

you need to check the type of other, like you did for the other operators

so i will have to type type(other) and then check whether the code passes or not ok let me give it a try

its still not taking the code

what is the code you wrote?

def __mul__(self, other): if isinstance (type(other), (int, float)): return self.__class__(**{i: getattr(self, i) * other for i in vars(self)}) return NotImplemented

this is the code i have written.

please format your code, it is unreadable

def __mul__(self, other):
        if isinstance (type(other), (int, float)):
            return self.__class__(**{i: getattr(self, i) * other for i in vars(self)})
        return NotImplemented

This is the code i have written

are you sure you have replaced isinstance with type? I still see isinstance there.

def __mul__(self, other):
        if (type(other), (int, float)):
            return self.__class__(**{i: getattr(self, i) * other for i in vars(self)})
        return NotImplemented

this is the updated one

what is that if statement doing? is there something being checked?

ok i have removed if from the code and have put type in place where if was there now also its not taking my code