Advertisement
dewabe

Runner

Oct 16th, 2016
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.10 KB | None | 0 0
  1. '''
  2. My playground to calculate the duration (in format hours:minutes:seconds) of travel time if my running speed is x and the distance is y
  3. '''
  4.  
  5. def minutes_to_float(pace):
  6.     '''
  7.     (number) -> float
  8.    
  9.     Converts minutes (with seconds) to float minutes
  10.    
  11.     >>> minutes_to_float(5.30)
  12.     5.5
  13.     >>> minutes_to_float(6.12)
  14.     >> 6.2
  15.     '''
  16.     return (pace // 1) + (pace % 1) / 0.6
  17.  
  18.  
  19. def float_to_minutes(mins):
  20.     '''
  21.     (number) -> float
  22.    
  23.     Convert float minutes to minutes (with seconds)
  24.  
  25.     >>> float_to_minutes(5.5)
  26.     5.3
  27.     >>> float_to_minutes(6.2)
  28.     6.12
  29.     '''
  30.     return (mins // 1) + (mins % 1) * 0.6
  31.  
  32.  
  33. def duration_in_minutes(pace, distance):
  34.     '''
  35.     (number, number) -> float
  36.    
  37.     Returns minutes (with seconds) how long it
  38.     takes to travel, if speed is pace and
  39.     length is distance
  40.    
  41.     >>> duration_in_minutes(5.4, 21.0975)
  42.     119.3315
  43.     '''
  44.     return float_to_minutes(minutes_to_float(pace) * distance)
  45.  
  46.  
  47. def get_hours(minutes):
  48.     '''
  49.     (number) -> int
  50.    
  51.     Returns an hours from given minutes
  52.    
  53.     >>> get_hours(119.3315)
  54.     1
  55.     '''
  56.     return int(minutes // 60)
  57.  
  58.  
  59. def get_minutes(minutes):
  60.     '''
  61.     (number) -> int
  62.    
  63.     Returns a minutes (from last hour) from given minutes
  64.    
  65.     >>> get_hours(119.3315)
  66.     59
  67.     '''
  68.     return int(minutes % 60)
  69.  
  70.  
  71. def get_seconds(minutes):
  72.     '''
  73.     (number) -> int
  74.    
  75.     Returns a seconds from given minutes
  76.    
  77.     >>> get_hours(119.3315)
  78.     33
  79.     '''
  80.     return int((minutes % 1) * 100)
  81.  
  82.  
  83. def minutes_to_tuple(minutes):
  84.     '''
  85.     (number) -> tuple
  86.    
  87.     Returns a tuple (hours, minutes, seconds)
  88.     from given minutes
  89.    
  90.     >>> minutes_to_tuple(119.3315)
  91.     (1, 59, 33)
  92.     '''
  93.     return (get_hours(minutes),
  94.         get_minutes(minutes),
  95.         get_seconds(minutes))
  96.  
  97.  
  98. def get_duration(pace, distance):
  99.     '''
  100.     (number, number) -> str
  101.    
  102.     Returns a string (hours:minutes:seconds)
  103.     according to given pace and distance
  104.    
  105.     >>> get_duration(5.4, 21.0975)
  106.     1:59:33
  107.     '''
  108.     duration = duration_in_minutes(pace, distance)
  109.     return '{0[0]}:{0[1]}:{0[2]}'.format(minutes_to_tuple(duration))
  110.  
  111.  
  112. pace = 5.4 # minutes per kilometer
  113. distance = 21.0975 # kilometers, half-marathon
  114.  
  115. print get_duration(pace, distance)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement