Tell us what’s happening:
I keep getting the error message “The string representation for Projectile(45, 45, 45) should be correct.”
My Projectile (45,45,45) returns 244.4 m. Isn’t that the correct displacement? I added newlines at the beginning and end, had displacement to one decimal place but still get the same error message.
Can someone point me in the right direction please.
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):
displacement = self.__calculate_displacement()
return (f'\nProjectile details:\n'
f'\nspeed: {self.__speed} m/s\n'
f'\nheight: {self.__height} m\n'
f'\nangle: {int(math.degrees(self.__angle))}°\n'
f'\ndisplacement: {displacement:.1f} m\n')
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/134.0.0.0 Safari/537.36
Challenge Information:
Learn Encapsulation by Building a Projectile Trajectory Calculator - Step 5