Learn Encapsulation by Building a Projectile Trajectory Calculator - Step 5

Tell us what’s happening:

I don’ t know how this is wrong i get Projectile(45,45,45) error, but it’s exactly how it is like on the example? even the spacing

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:'
        f'\nspeed: {self.__speed} m/s\n '
        f'\nheight: {self.__height} m\n'
        f'\nangle: {int(math.degrees(self.__angle))}°\n'
        f'\ndisplacement: {round(self.__calculate_displacement(),1)}\n')


    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
ball = Projectile(10,3,45)
print(ball)

# User Editable Region



# User Editable Region

        

Your browser information:

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

Can you share your output?

yes no problem,

Projectile details:
speed: 10 m/s
 
height: 3 m

angle: 45°

displacement: 12.6

Spacing looks off compared to the example:

Projectile details:
speed: 10 m/s
height: 3 m
angle: 45°
displacement: 12.6 m

It should look exactly like this.

but then when i try to do that the output get’s really awkward
code

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:'
        f'\nspeed: {self.__speed} m/s\n'
        f'height: {self.__height} m\n'
        f'angle: {int(math.degrees(self.__angle))}°\n'
        f'displacement: {round(self.__calculate_displacement(),1)} m\n')


    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
ball = Projectile(10,3,45)
print(ball)

        

output:

Projectile details:
speed: 10 m/s
height: 3 m
angle: 45°
displacement: 12.6 m

that’s more correct. Issues: it (the whole string output) should start with a new line and end with a new line

1 Like

oh right okay haha such a minor detail