Learn Encapsulation by Building a Projectile Trajectory Calculator - Step 5

Tell us what’s happening:

Hi! i’m not sure what i’m doing wrong, can i get some help?

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 __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
        

# User Editable Region

    def __str__(self):
        output = f'\nProjectile details:\n'
        output += f'speed: {self.__speed} m/s\n'
        output += f'height: {self.__height} m\n'
        output += f'angle: {int(math.degrees(self.__angle))}º\n'
        output += f'displacement: {ball._Projectile__calculate_displacement():.1f} m\n'
        return output

ball = Projectile(10,3,45)
print(ball)

# 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/128.0.0.0 Safari/537.36 OPR/114.0.0.0

Challenge Information:

Learn Encapsulation by Building a Projectile Trajectory Calculator - Step 5

Angle character in your code looks a bit weird. Try copying it from the description, or from here: °

I changed it, but it’s still wrong…

What error are you getting now?

The same error: “The string representation should also be correct for other instances.”

Previously it was The string representation for Projectile(45, 45, 45) should be correct.

So that one has correct representation now, but other projectiles do not have correct representation.

Any ideas what might be wrong? You might try creating second instance of the class, with different values and see how it representation looks like.

mmm, i’m trying but i can’t find one, can u give me one example of a projectile that doesn’t pass the test?

sorry for the trouble

i saw some other codes and they use round(self.__calculate_displacement(),1) insted of selecting the decimals, the drill didn’t say to round it…

Thanks for the help!

the test is checking Projectile(10, 10, 10)

and this is the tested output string:

"""
Projectile details:
speed: 10 m/s
height: 10 m
angle: 10°
displacement: 15.9 m
"""

Your code instead is returning

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

the displacement comes out different. can you see the issue?

no, the issue is not the rounding. The issue is

vs

Oh i didn’t realize, Thanks!