1414Reference: https://en.wikipedia.org/wiki/Collision
1515"""
1616
17- def inelastic_collisions (mass1 :float ,
18- mass2 :float ,
19- velocity1 :float ,
20- velocity2 :float
21- ) -> float :
17+
18+ def inelastic_collisions (
19+ mass1 : float , mass2 : float , velocity1 : float , velocity2 : float
20+ ) -> float :
2221 """Calculate final velocity after a perfectly inelastic collision.
2322
2423 The two objects stick together and share a common final velocity.
@@ -38,18 +37,16 @@ def inelastic_collisions(mass1 :float,
3837 >>> inelastic_collisions(9.0, 8.1, -3.2, 3.1)
3938 -0.22
4039 """
41- initial_momentum = (( mass1 * velocity1 ) + (mass2 * velocity2 ) )
42- total_mass = ( mass2 + mass1 )
43- final_velocity = round ((initial_momentum / total_mass ), 2 )
44-
40+ initial_momentum = (mass1 * velocity1 ) + (mass2 * velocity2 )
41+ total_mass = mass2 + mass1
42+ final_velocity = round ((initial_momentum / total_mass ), 2 )
43+
4544 return final_velocity
4645
4746
48- def elastic_collisions (mass1 :float ,
49- mass2 :float ,
50- velocity1 :float ,
51- velocity2 :float
52- ) -> str :
47+ def elastic_collisions (
48+ mass1 : float , mass2 : float , velocity1 : float , velocity2 : float
49+ ) -> str :
5350 """Calculate final velocities after a perfectly elastic collision.
5451
5552 The collision is head-on and conserves both momentum and kinetic energy.
@@ -70,24 +67,25 @@ def elastic_collisions(mass1 :float,
7067 '2.76 ; -3.54'
7168 """
7269 com_velocity = inelastic_collisions (mass1 , mass2 , velocity1 , velocity2 )
73- initial_velocities = [velocity1 , velocity2 ]
70+ initial_velocities = [velocity1 , velocity2 ]
7471 final_velocities = []
7572
7673 for vel in initial_velocities :
7774 new_vel = - 1 * (vel - com_velocity )
7875 final_vel = com_velocity + new_vel
7976 final_velocities .append (round (final_vel , 2 ))
80-
81- return f'{ final_velocities [0 ]} ; { final_velocities [1 ]} '
8277
78+ return f"{ final_velocities [0 ]} ; { final_velocities [1 ]} "
8379
84- def type_collision (mass1 :float ,
85- mass2 :float ,
86- velocity_initial1 :float ,
87- velocity_initial2 :float ,
88- velocity_final1 :float ,
89- velocity_final2 :float
90- ) -> str :
80+
81+ def type_collision (
82+ mass1 : float ,
83+ mass2 : float ,
84+ velocity_initial1 : float ,
85+ velocity_initial2 : float ,
86+ velocity_final1 : float ,
87+ velocity_final2 : float ,
88+ ) -> str :
9189 """Determine the collision type from initial and final velocities.
9290
9391 Compares initial and final momentum and kinetic energy to classify the collision.
@@ -111,19 +109,22 @@ def type_collision(mass1 :float,
111109 >>> type_collision(1.0, 1.0, 2.0, 3.0, 0.0, 0.0)
112110 'Inelastic Collision'
113111 """
114- momentum_initial = ((mass1 * velocity_initial1 ) + (mass2 * velocity_initial2 ))
115- momentum_final = ((mass1 * velocity_final1 ) + (mass2 * velocity_final2 ))
116- kinetic_initial = 0.5 * ((mass1 * velocity_initial1 ** 2 ) + (mass2 * velocity_initial2 ** 2 ))
112+ momentum_initial = (mass1 * velocity_initial1 ) + (mass2 * velocity_initial2 )
113+ momentum_final = (mass1 * velocity_final1 ) + (mass2 * velocity_final2 )
114+ kinetic_initial = 0.5 * (
115+ (mass1 * velocity_initial1 ** 2 ) + (mass2 * velocity_initial2 ** 2 )
116+ )
117117 kinetic_final = 0.5 * ((mass1 * velocity_final1 ** 2 ) + (mass2 * velocity_final2 ** 2 ))
118118
119119 if kinetic_final == kinetic_initial and momentum_initial == momentum_final :
120120 return 'Perfectly Elastic Collision'
121- elif kinetic_final != kinetic_initial and momentum_initial == momentum_final :
121+ elif not ( kinetic_final == kinetic_initial ) and momentum_initial == momentum_final :
122122 return 'Perfectly Inelastic Collision'
123123 else :
124- return ' Inelastic Collision'
124+ return " Inelastic Collision"
125125
126126
127127if __name__ == "__main__" :
128128 import doctest
129- doctest .testmod ()
129+
130+ doctest .testmod ()
0 commit comments