import math import csv teams = ['CHI', 'COL', 'DAL', 'MIN', 'NSH', 'STL', 'WPG', 'ANA', 'CGY', 'EDM', 'LAK', 'PHX', 'SJS', 'VAN', 'BOS', 'BUF', 'DET', 'FLA', 'MTL', 'OTT', 'TBL', 'TOR', 'CAR', 'CBJ', 'NJD', 'NYR', 'NYI', 'PHI', 'PIT', 'WSH'] krach = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100] new_krach = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100] wins = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] RRWP = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] SOS = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] GP = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] games = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] with open([put your game results csv filepath here], newline='') as results: game_result = csv.reader(results, delimiter=',') for row in game_result: if row[1] == 'Chicago Blackhawks': away = 0 elif row[1] == 'Colorado Avalanche': away = 1 elif row[1] == 'Dallas Stars': away = 2 elif row[1] == 'Minnesota Wild': away = 3 elif row[1] == 'Nashville Predators': away = 4 elif row[1] == 'St. Louis Blues': away = 5 elif row[1] == 'Winnipeg Jets': away = 6 elif row[1] == 'Anaheim Ducks': away = 7 elif row[1] == 'Calgary Flames': away = 8 elif row[1] == 'Edmonton Oilers': away = 9 elif row[1] == 'Los Angeles Kings': away = 10 elif row[1] == 'Phoenix Coyotes': away = 11 elif row[1] == 'San Jose Sharks': away = 12 elif row[1] == 'Vancouver Canucks': away = 13 elif row[1] == 'Boston Bruins': away = 14 elif row[1] == 'Buffalo Sabres': away = 15 elif row[1] == 'Detroit Red Wings': away = 16 elif row[1] == 'Florida Panthers': away = 17 elif row[1] == 'Montreal Canadiens': away = 18 elif row[1] == 'Ottawa Senators': away = 19 elif row[1] == 'Tampa Bay Lightning': away = 20 elif row[1] == 'Toronto Maple Leafs': away = 21 elif row[1] == 'Carolina Hurricanes': away = 22 elif row[1] == 'Columbus Blue Jackets': away = 23 elif row[1] == 'New Jersey Devils': away = 24 elif row[1] == 'New York Rangers': away = 25 elif row[1] == 'New York Islanders': away = 26 elif row[1] == 'Philadelphia Flyers': away = 27 elif row[1] == 'Pittsburgh Penguins': away = 28 else: away = 29 if row[3] == 'Chicago Blackhawks': home = 0 elif row[3] == 'Colorado Avalanche': home = 1 elif row[3] == 'Dallas Stars': home = 2 elif row[3] == 'Minnesota Wild': home = 3 elif row[3] == 'Nashville Predators': home = 4 elif row[3] == 'St. Louis Blues': home = 5 elif row[3] == 'Winnipeg Jets': home = 6 elif row[3] == 'Anaheim Ducks': home = 7 elif row[3] == 'Calgary Flames': home = 8 elif row[3] == 'Edmonton Oilers': home = 9 elif row[3] == 'Los Angeles Kings': home = 10 elif row[3] == 'Phoenix Coyotes': home = 11 elif row[3] == 'San Jose Sharks': home = 12 elif row[3] == 'Vancouver Canucks': home = 13 elif row[3] == 'Boston Bruins': home = 14 elif row[3] == 'Buffalo Sabres': home = 15 elif row[3] == 'Detroit Red Wings': home = 16 elif row[3] == 'Florida Panthers': home = 17 elif row[3] == 'Montreal Canadiens': home = 18 elif row[3] == 'Ottawa Senators': home = 19 elif row[3] == 'Tampa Bay Lightning': home = 20 elif row[3] == 'Toronto Maple Leafs': home = 21 elif row[3] == 'Carolina Hurricanes': home = 22 elif row[3] == 'Columbus Blue Jackets': home = 23 elif row[3] == 'New Jersey Devils': home = 24 elif row[3] == 'New York Rangers': home = 25 elif row[3] == 'New York Islanders': home = 26 elif row[3] == 'Philadelphia Flyers': home = 27 elif row[3] == 'Pittsburgh Penguins': home = 28 else: home = 29 if row[2] == row [4]: yep = 0 else: games[home][away] = games[home][away] + 1 games[away][home] = games[away][home] + 1 GP[home] = GP[home] + 1 GP[away] = GP[away] + 1 if row[5] == 'SO': wins[away] = wins[away] + 0.5 wins[home] = wins[home] + 0.5 elif row[2] > row[4]: wins[away] = wins[away] + 1 else: wins[home] = wins[home] + 1 good = 0 while good != 1: for team in range(30): sum = 0 for opp in range(30): sum = sum + (krach[team]*games[team][opp])/(krach[team]+krach[opp]) new_krach[team] = (wins[team]/sum)*krach[team] ratio = new_krach[team]/krach[team] abs_difference = math.fabs(1-ratio) if abs_difference <= 0.00001: good = 1 else: good = 0 krach[team] = new_krach[team] for int in range(10): scale_wins = 0 for team in range(30): scale_wins = scale_wins + 100/(100 + krach[team]) scale = scale_wins/15 for team in range(30): krach[team] = krach[team] * scale for team in range(30): RRW = 0 for opp in range(30): if team == opp: RRW = RRW else: RRW = RRW + krach[team]/(krach[team]+krach[opp]) RRWP[team] = RRW/29 SOS[team] = krach[team] * (GP[team] - wins[team])/wins[team] for row in range(30): print(teams[row], str(round(krach[row],2)).rjust(7), str(round(RRWP[row],4)).rjust(6), str(round(SOS[row],2)).rjust(7)) output = open('[put your output filepath here]', 'w') for row in range(30): output.write(str(krach[row])) output.write('\n')