Advertisement
Kuroshi1

Reverse IAAF Calculator

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