Skip to content

Instantly share code, notes, and snippets.

@quandyfactory
Created December 4, 2014 12:30
Show Gist options
  • Select an option

  • Save quandyfactory/b3e0a8746d389cac8ffb to your computer and use it in GitHub Desktop.

Select an option

Save quandyfactory/b3e0a8746d389cac8ffb to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# coding: utf-8
"""Calculates kinetic energy for a moving object at a given mass and speed"""
import locale
locale.setlocale(locale.LC_ALL, '')
objects = (
{'name': 'Bicycle', 'mass': 100,},
{'name': 'Subcompact Car', 'mass': 1200,},
{'name': 'Sedan/Compact SUV', 'mass': 1600,},
{'name': 'SUV/Truck', 'mass': 2500,},
)
speeds = (25, 50, 75, 100)
border = '--------------------------------------------------------------------'
header = 'Vehicle Mass (kg) Speed (km/h) Speed (m/s) KE (Joules)'
template = '%17s %9s %14s %13s %11s'
def convert_speed(speed):
"""Converts a speed in km/h to m/s"""
return speed*1000.0/3600
def kinetic_energy(mass, speed):
"""Returns the kinetic energy of a moving object"""
return mass*0.5*(speed**2)
if __name__ == '__main__':
print(border)
print(header)
print(border)
for obj in objects:
name = obj['name']
mass = obj['mass']
for speed in speeds:
ms_speed = convert_speed(speed)
KE = kinetic_energy(mass, ms_speed)
print(template % (
name,
locale.format('%d', mass, grouping=True),
speed,
round(ms_speed,1),
locale.format('%d', int(round(KE,0)), grouping=True),
)
)
print(border)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment