Advertisement
Kuroshi1

IAAF Score Calculator

Jun 18th, 2020
2,346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.74 KB | None | 0 0
  1. from datetime import datetime
  2.  
  3. short = ['100M', '200M', '400M', '100M HURDLES', '400M HURDLES', '4X100M RELAY']
  4.  
  5. mid = ['800M', '1500M', '5000M', '10000M', '3000M STEEPLECHASE']
  6.  
  7. long = ['MARATHON', '20KM RACE WALK', '50KM RACE WALK']
  8.  
  9. field = ['HIGH JUMP', 'POLE VAULT', 'LONG JUMP', 'TRIPLE JUMP', 'SHOT PUT', 'DISCUS', 'HAMMER', 'JAVELIN', 'DECATHLON', 'HEPTATHLON']
  10.  
  11. event = input('Enter event: ').upper()
  12. sex = input('Enter sex (M or F): ').upper()
  13. result = input('Enter result: ')
  14.  
  15. def convert_to_seconds(mark, event):
  16.  
  17.   if event in mid:
  18.     if mark.count('.') == 1:
  19.       t = datetime.strptime(mark, '%M:%S.%f')
  20.     else:
  21.       t = datetime.strptime(mark, '%M:%S')
  22.     return t.minute * 60 + t.second + t.microsecond/1000000
  23.  
  24.   elif event in long:
  25.     if mark.count(':') == 1:
  26.       t = datetime.strptime(mark, '%H:%M')
  27.     elif mark.count('.') == 1:
  28.       t = datetime.strptime(mark, '%H:%M:%S.%f')
  29.     else:
  30.       t = datetime.strptime(mark, '%H:%M:%S')
  31.     return (t.hour * 60 + t.minute) * 60 + t.second + t.microsecond/1000000
  32.  
  33.   else:
  34.     return float(mark)
  35.  
  36.  
  37. def get_score(event, sex, result):
  38.   constants = get_constants(event, sex)
  39.   result = convert_to_seconds(result, event)
  40.  
  41.   result_shift = constants[0]
  42.   conversion_factor = constants[1]
  43.   point_shift = constants[2]
  44.  
  45.   return round(conversion_factor * (result + result_shift)**2 + point_shift)
  46.  
  47.  
  48. def get_constants(event, sex):
  49.   #returns list [result shift, conversion factor, point shift]
  50.  
  51.   # Men's running events
  52.   if sex == 'M':
  53.  
  54.     if event == '100M':
  55.       return [-17, 24.63, 0]
  56.     if event == '200M':
  57.       return [-35.5, 5.08, 0]
  58.     if event == '400M':
  59.       return [-79, 1.021, 0]
  60.     if event == '800M':
  61.       return [-182, 0.198, 0]
  62.     if event == '1500M':
  63.       return [-385, 0.04066, 0]
  64.     if event == '5000M':
  65.       return [-1440, 0.002778, 0]
  66.     if event == '10000M':
  67.       return [-3150, 0.000524, 0]
  68.     if event == 'MARATHON':
  69.       return [-15600, 0.0000191, 0]
  70.     if event == '110M HURDLES':
  71.       return [-25.8, 7.66, 0]
  72.     if event == '400M HURDLES':
  73.       return [-95.5, 0.546, 0]
  74.     if event == '3000M STEEPLECHASE':
  75.       return [-1020, 0.004316, 0]
  76.     if event == '20KM RACE WALK':
  77.       return [-11400, 0.00002735, 0]
  78.     if event == '50KM RACE WALK':
  79.       return [-37200, 0.000002124, 0]
  80.     if event == '4X100M RELAY':
  81.       return [-69.5, 1.236, 0]
  82.     if event == '4X400M RELAY':
  83.       return [-334, 0.05026, 0]
  84.  
  85.     # Men's field events
  86.     if event == 'HIGH JUMP':
  87.       return [11.534, 32.29, -5000]
  88.     if event == 'POLE VAULT':
  89.       return [39.39, 3.042, -5000]
  90.     if event == 'LONG JUMP':
  91.       return [48.41, 1.929, -5000]
  92.     if event == 'TRIPLE JUMP':
  93.       return [98.63, 0.4611, -5000]
  94.     if event == 'SHOT PUT':
  95.       return [687.7, 0.042172, -20000]
  96.     if event == 'DISCUS':
  97.       return [2232.6, 0.004007, -20000]
  98.     if event == 'HAMMER':
  99.       return [2669.4, 0.0028038, -20000]
  100.     if event == 'JAVELIN':
  101.       return [2886.8, 0.0023974, -20000]
  102.  
  103.     # Combined
  104.     if event == 'DECATHLON':
  105.       return [71170, 0.00000097749, -5000]
  106.  
  107.   # Women's running events
  108.   if sex == 'F':
  109.  
  110.     if event == '100M':
  111.       return [-22, 9.92, 0]
  112.     if event == '200M':
  113.       return [-45.5, 2.242, 0]
  114.     if event == '400M':
  115.       return [-110, 0.335, 0]
  116.     if event == '800M':
  117.       return [-250, 0.0688, 0]
  118.     if event == '1500M':
  119.       return [-540, 0.0134, 0]
  120.     if event == '5000M':
  121.       return [-2100, 0.000808, 0]
  122.     if event == '10000M':
  123.       return [-4500, 0.0001712, 0]
  124.     if event == 'MARATHON':
  125.       return [-22800, 0.00000595, 0]
  126.     if event == '100M HURDLES':
  127.       return [-30, 3.98, 0]
  128.     if event == '400M HURDLES':
  129.       return [-130, 0.208567, 0]
  130.     if event == '3000M STEEPLECHASE':
  131.       return [-1510, 0.001323, 0]
  132.     if event == '20KM RACE WALK':
  133.       return [-13200, 0.0000187, 0]
  134.     if event == '4X100M RELAY':
  135.       return [-98, 0.3895, 0]
  136.     if event == '4X400M RELAY':
  137.       return [-480, 0.01562, 0]
  138.  
  139.     # Women's field events
  140.     if event == 'HIGH JUMP':
  141.       return [10.574, 39.34, -5000]
  142.     if event == 'POLE VAULT':
  143.       return [34.83, 3.953, -5000]
  144.     if event == 'LONG JUMP':
  145.       return [49.24, 1.966, -5000]
  146.     if event == 'TRIPLE JUMP':
  147.       return [105.53, 0.4282, -5000]
  148.     if event == 'SHOT PUT':
  149.       return [657.53, 0.0462, -20000]
  150.     if event == 'DISCUS':
  151.       return [2227.3, 0.0040277, -20000]
  152.     if event == 'HAMMER':
  153.       return [2540, 0.0030965, -20000]
  154.     if event == 'JAVELIN':
  155.       return [2214.9, 0.004073, -20000]
  156.  
  157.     # Combined
  158.     if event == 'HEPTATHLON':
  159.       return [55990, 0.000001581, -5000]
  160.  
  161. print('IAAF Score: ' + str(get_score(event, sex, result)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement