Learn Encapsulation by Building a Projectile Trajectory Calculator - Step 13

Tell us what’s happening:

I have written the code correctly but not sure why its not accepting my code can someone please help me in this?

Your code so far

import math

GRAVITATIONAL_ACCELERATION = 9.81
PROJECTILE = "∙"
x_axis_tick = "T"
y_axis_tick = "⊣"

class Projectile:
    __slots__ = ('__speed', '__height', '__angle')

    def __init__(self, speed, height, angle):
        self.__speed = speed
        self.__height = height
        self.__angle = math.radians(angle)
        
    def __str__(self):
        return f'''
Projectile details:
speed: {self.speed} m/s
height: {self.height} m
angle: {self.angle}°
displacement: {round(self.__calculate_displacement(), 1)} m
'''

    def __calculate_displacement(self):
        horizontal_component = self.__speed * math.cos(self.__angle)
        vertical_component = self.__speed * math.sin(self.__angle)
        squared_component = vertical_component**2
        gh_component = 2 * GRAVITATIONAL_ACCELERATION * self.__height
        sqrt_component = math.sqrt(squared_component + gh_component)
        
        return horizontal_component * (vertical_component + sqrt_component) / GRAVITATIONAL_ACCELERATION
        
    def __calculate_y_coordinate(self, x):
        height_component = self.__height
        angle_component = math.tan(self.__angle) * x
        acceleration_component = GRAVITATIONAL_ACCELERATION * x ** 2 / (
                2 * self.__speed ** 2 * math.cos(self.__angle) ** 2)
        y_coordinate = height_component + angle_component - acceleration_component

        return y_coordinate
    
    def calculate_all_coordinates(self):
        return [
            (x, self.__calculate_y_coordinate(x))
            for x in range(math.ceil(self.__calculate_displacement()))
        ]

    @property
    def height(self):
        return self.__height

    @property
    def angle(self):
        return round(math.degrees(self.__angle))

    @property
    def speed(self):
        return self.__speed

    @height.setter
    def height(self, n):
        self.__height = n

    @angle.setter
    def angle(self, n):
        self.__angle = math.radians(n)

    @speed.setter
    def speed(self, s):
       self.__speed = s

    def __repr__(self):
        return f"{self.__class__.__name__}({self.speed}, {self.height}, {self.angle})"


# User Editable Region

class Graph:
    __slots__ = ('__coordinates',)

    def __init__(self, coordinates):
        self.__coordinates = coordinates

    def __repr__(self):
        return f'Graph({self.__coordinates})'
ball = Projectile(10, 3, 45)
print(ball)
coordinates = ball.calculate_all_coordinates()
graph = Graph(coordinates)
print(repr(graph))

# User Editable Region

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 Encapsulation by Building a Projectile Trajectory Calculator - Step 13

are you sure you do not have extra characters here?

Don’t assume this because it stops you from looking for the problem

let me check this step and will update on this.

ok let me recheck the complete code and if required i will share it here as well

its still the same i am unable to pass this code i have checked and not able to find any issue here can you please help me?

did you make changes where I pointed out you have issues?

yes i did made the changes but still not working

Do you remember what you need to do in the forum after you make a change to your code?

As well, please provide all relevant info (what you changed, did it have an effect, any hints/errors)

that’s good, I have no idea what you did tho

yeah share the code with you to check if there is still any problem or not

you did not do that yet

Well, first you would check yourself if there is a problem, and try to fix it. Then, if you still need help, you will need to post your code here.

class Graph:
    __slots__ = ('__coordinates',)

    def __init__(self, coordinates):
        self.__coordinates = coordinates

    def __repr__(self):
        return f'Graph({self.__coordinates})'
ball = Projectile(10, 3, 45)
print(ball)
coordinates = ball.calculate_all_coordinates()
graph = Graph(coordinates)
print(repr(graph))

sorry for the delay but here is the code still its not passing it

What did you change in this code? It looks the same to me.

where is the extra character in it can you please let me know?

sorry my bad i forgot to remove the , in the first code now it worked and it had passed through it

Please read each reply and try to modify your code instead of posting your original code again and saying you changed it.

1 Like