from scipy.stats import norm import numpy as np import random import time import itertools class Conference(): def __init__(self, name, teams): self.name = name self.teams = teams self.standings = [] self.tournament_type = 1 def setName(self, name): self.name = name def setStandings(self): self.standings = sorted(self.teams.items(), key = lambda x: x[1].stats['ConfWPer'], reverse = True) i = 1 for team in self.standings: team[1].standing = i i += 1 def viewGamesByDay(self, date): games_list = {} for team in self.teams.items(): for game in team[1].schedule.items(): if game[0][-4:] == date: games_list[game[0]] = game[1] for game in games_list.items(): print(game[1].away_team.name + ' at ' + game[1].home_team.name) def viewStandings(self): for team in self.standings: print(str(team[1].name) + ': ' + str(team[1].stats['ConfW']) + '-' + str(team[1].stats['ConfL'])) def addTeam(self, team): self.teams[str(team.name)] = team class Team(): def __init__(self, name, ID, conference, schedule, players): self.name = name self.teamID = ID self.schedule = schedule self.players = players self.available_dates = {'January': [x for x in range(1,32)], 'February': [x for x in range(1,29)]} self.conference = conference self.ranking = 0 self.standing = 0 self.seed = 0 self.starters = {} self.stats = {'W': 0, 'L': 0, 'WPer': 0, 'ConfW': 0, 'ConfL': 0, 'ConfWPer': 0, 'FGM': 0, 'FGA': 0, 'FG%': 0, '3PM': 0, '3PA': 0, '3P%': 0, 'REB': 0, 'AST': 0, 'TOV': 0, 'PTS': 0} def setStarter(self, player, position): self.starters[position] = player def setName(self, name): self.name = name def getConference(self): return self.conference def getNumberOfGames(self): return len(self.schedule) def getAvailableDates(self): return self.available_dates def viewInfo(self): print('School: ' + self.name + '\nConference: ' + self.conference.name + '\nRecord: ' + str(self.stats['W']) + '-' + str(self.stats['L']) + ' (' + str(self.stats['ConfW']) + '-' + str(self.stats['ConfL']) + ')\nRanking: ' + str(self.ranking) + '\nConference Standing: ' + str(self.standing) + '\n') print('Roster') for player in self.players.items(): print(player[0]) def viewStanding(self): print(self.name + ': ' + str(self.standing)) def viewRanking(self): print(self.name + ': ' + str(self.ranking)) def viewStats(self): print(self.name) for stat in self.stats.items(): print(stat[0] + ': ' + str(stat[1])) def viewUsage(self): for player in self.players.items(): print(player[0] + ': ' + str(player[1].usage)+'%') def viewSchedule(self): print(self.name + ' schedule:') sched = sorted(self.schedule.items(), key = lambda x: x[1].gameID[-4:]) for game in sched: if game[1].home_team.name == self.name: print(game[1].date + ' vs ' + game[1].away_team.name) else: print(game[1].date + ' at ' + game[1].home_team.name) def addPlayer(self, player): self.players[str(player.name)] = player def removePlayer(self, player): try: del self.players[player] except: pass def checkMinutes(self): self.total_minutes = 0 for player in self.players.items(): self.total_minutes += player[1].minutes self.available_minutes = 200 - self.total_minutes return self.available_minutes def addGame(self, is_conference, opponent): opp_name = opponent.name opp_id = opponent.teamID try: opp_dates = opponent.getAvailableDates() selected_date = None if is_conference: second_leg = False for game in self.schedule.items(): if opp_name == game[1].home_team.name or opp_name == game[1].away_team.name: second_leg = True while selected_date == None: if is_conference: if second_leg == False: date_choice = random.randint(1,31) month = 'January' month_code = '01' else: date_choice = random.randint(1,28) month = 'February' month_code = '02' for day in self.available_dates[month]: if day == date_choice: for opp_day in opp_dates[month]: if opp_day == date_choice: selected_date = date_choice opp_dates[month].remove(selected_date) self.available_dates[month].remove(selected_date) try: opp_dates[month].remove(selected_date-1) except: pass try: opp_dates[month].remove(selected_date+1) except: pass try: self.available_dates[month].remove(selected_date-1) except: pass try: self.available_dates[month].remove(selected_date+1) except: pass break if selected_date != None: break date = month + ' ' + str(selected_date) gameID = opp_id + self.teamID + month_code + format(selected_date,'02') game = Game(self, opponent, date, gameID) self.addToSchedule(game, gameID) opponent.addToSchedule(game, gameID) return game except ValueError: print('BAD') def addToSchedule(self, game, gameID): self.schedule[gameID] = game def removeFromSchedule(self, gameID): try: del self.schedule[gameID] except: pass def pickPlay(self): temp = 0 play = random.randint(1,100) for player in self.players.items(): temp += player[1].usage if play <= temp: return player[1] return player[-1] def pickDefender(self, pos): for player in self.players.items(): if player[1].pos == pos: return player[1] return player[-1] def addStat(self, stat): self.stats[stat] += 1 def addMadeShot(self, points): self.stats['FGM'] += 1 self.stats['FGA'] += 1 self.stats['FG%'] = format(self.stats['FGM']/self.stats['FGA'],'.1%') if points == 2: self.stats['PTS'] += 2 elif points == 3: self.stats['PTS'] += 3 self.stats['3PM'] += 1 self.stats['3PA'] += 1 self.stats['3P%'] = format(self.stats['3PM']/self.stats['3PA'],'.1%') def addMissedShot(self, points): self.stats['FGA'] += 1 self.stats['FG%'] = format(self.stats['FGM']/self.stats['FGA'],'.1%') if points == 3: self.stats['3PA'] += 1 self.stats['3P%'] = format(self.stats['3PM']/self.stats['3PA'],'.1%') def addWin(self, conf_game): self.stats['W'] += 1 self.stats['WPer'] = self.stats['W']/(self.stats['W'] + self.stats['L']) if conf_game: self.stats['ConfW'] += 1 self.stats['ConfWPer'] = self.stats['ConfW']/(self.stats['ConfW'] + self.stats['ConfL']) def addLoss(self, conf_game): self.stats['L'] += 1 self.stats['WPer'] = self.stats['W']/(self.stats['W'] + self.stats['L']) if conf_game: self.stats['ConfL'] += 1 self.stats['ConfWPer'] = self.stats['ConfW']/(self.stats['ConfW'] + self.stats['ConfL']) class Player(): def __init__(self, name, team, pos, ratings, usage, minutes, tendencies): self.name = name self.pos = pos self.minutes = minutes self.height = 0 self.weight = 0 self.team = team self.ratings = ratings self.usage = usage self.game_stats = [0,0,0,0,0,0,0] self.stats = {'FGM': 0, 'FGA': 0, 'FG%': 0, '3PM': 0, '3PA': 0, '3P%': 0, 'REB': 0, 'AST': 0, 'TOV': 0, 'PTS': 0} self.tendencies = tendencies def setUsage(self, usage): self.usage = usage def setRating(self, rating, value): self.ratings[rating] = value def setName(self, name): self.name = name def setTeam(self, team): self.team = team def setPosition(self, pos): self.pos = pos def setHeight(self, height): self.height = height def setWeight(self, weight): self.weight = weight def setMinutes(self, minutes): self.minutes = minutes def getTeam(self): return self.team def viewInfo(self): print(self.name + '\nTeam: ' + self.team.name + '\nPosition: ' + self.pos + '\nHeight: ' + str(self.height) + '\nWeight: ' + str(self.weight) + '\nUsage: ' + str(self.usage) + '\n\nRatings') for rating in self.ratings.items(): print(rating[0] + ': ' + str(rating[1])) print() def viewStats(self): print('Stats') for stat in self.stats.items(): print(stat[0] + ': ' + str(stat[1])) def addStat(self, stat): self.stats[stat] += 1 self.team.addStat(stat) def addMadeShot(self, points): self.stats['FGM'] += 1 self.stats['FGA'] += 1 self.stats['FG%'] = format(self.stats['FGM']/self.stats['FGA'],'.1%') if points == 2: self.stats['PTS'] += 2 elif points == 3: self.stats['PTS'] += 3 self.stats['3PM'] += 1 self.stats['3PA'] += 1 self.stats['3P%'] = format(self.stats['3PM']/self.stats['3PA'],'.1%') self.team.addMadeShot(points) def addMissedShot(self, points): self.stats['FGA'] += 1 self.stats['FG%'] = format(self.stats['FGM']/self.stats['FGA'],'.1%') if points == 3: self.stats['3PA'] += 1 self.stats['3P%'] = format(self.stats['3PM']/self.stats['3PA'],'.1%') self.team.addMissedShot(points) class Game(): def __init__(self, home_team, away_team, date, gameID): self.home_team = home_team self.away_team = away_team self.home_team_stats = {'FGM': 0, 'FGA': 0, 'FG%': 0, '3PM': 0, '3PA': 0, '3P%': 0, 'REB': 0, 'AST': 0, 'TOV': 0, 'PTS': 0} self.away_team_stats = {'FGM': 0, 'FGA': 0, 'FG%': 0, '3PM': 0, '3PA': 0, '3P%': 0, 'REB': 0, 'AST': 0, 'TOV': 0, 'PTS': 0} self.home_player_stats = {} self.away_player_stats = {} for player in home_team.players.items(): self.home_player_stats[player[0]] = {'FGM': 0, 'FGA': 0, 'FG%': 0, '3PM': 0, '3PA': 0, '3P%': 0, 'REB': 0, 'AST': 0, 'TOV': 0, 'PTS': 0} for player in away_team.players.items(): self.away_player_stats[player[0]] = {'FGM': 0, 'FGA': 0, 'FG%': 0, '3PM': 0, '3PA': 0, '3P%': 0, 'REB': 0, 'AST': 0, 'TOV': 0, 'PTS': 0} self.time = 2400 self.home_score = 0 self.away_score = 0 self.possession = '' self.completed = False self.date = date self.stats = [] self.gameID = gameID def setWinnerLoser(self, winner, loser): self.winner = winner self.loser = loser def setGameID(self, ID): self.gameID = ID def setDate(self, date): self.date = date def setTeam(self, side, team): if side == 'home': self.home_team = team else: self.away_team = team def setPossession(self,poss): if poss == 0: self.possession = 'HOME' else: self.possession = 'AWAY' def getGameID(self): return self.gameID def getTeam(self, side): if side == 'HOME': return self.home_team else: return self.away_team def viewInfo(self): print(self.date + '\n' + self.away_team.name + ' at ' + self.home_team.name + '\nID: ' + self.gameID) if self.completed: print(self.away_team.name + ' ' + str(self.away_score) + '-' + str(self.home_score) + ' ' + self.home_team.name) def viewTeams(self): print(self.away_team.name + ' at ' + self.home_team.name) def viewStats(self): print(self.home_team.name) for stat in self.home_team_stats.items(): print(stat[0] + ': ' + str(stat[1])) for player in self.home_player_stats.items(): print(player[0]) for stat in player[1].items(): print(stat[0] + ': ' + str(stat[1])) print() print(self.away_team.name) for stat in self.away_team_stats.items(): print(stat[0] + ': ' + str(stat[1])) for player in self.away_player_stats.items(): print(player[0]) for stat in player[1].items(): print(stat[0] + ': ' + str(stat[1])) def checkTime(self): if self.time <= 0: self.completed = True return True else: return False def reduceTime(self, time): self.time -= time def changePossession(self): if self.possession == 'HOME': self.possession = 'AWAY' elif self.possession == 'AWAY': self.possession = 'HOME' def runPlay(self, commentary): if self.possession == 'HOME': offense = self.home_team defense = self.away_team elif self.possession == 'AWAY': offense = self.away_team defense = self.home_team player = offense.pickPlay() def_player = defense.pickDefender(player.pos) tov = random.randint(1,100) tov_chance = 17.5 + 10.2*((def_player.ratings['STL'] - 75)/6 - (player.ratings['BALL'] - 75)/6) if tov <= tov_chance: player.addStat('TOV') self.addStat(player.name, 'TOV') self.changePossession() self.reduceTime(random.randint(5,15)) if commentary: print('(' + str(self.time) + ') ' + offense.name + ': ' + player.name + ' turns the ball over\n') time.sleep(2) else: self.reduceTime(random.randint(15,30)) self.takeShot(player, def_player, offense, defense, commentary) return def addStat(self, player, stat): try: self.home_player_stats[player][stat] += 1 self.home_team_stats[stat] += 1 except KeyError: try: self.away_player_stats[player][stat] += 1 self.away_team_stats[stat] += 1 except KeyError: pass def addMadeShot(self, player, points): try: self.home_player_stats[player]['FGM'] += 1 self.home_player_stats[player]['FGA'] += 1 self.home_player_stats[player]['FG%'] = format(self.home_player_stats[player]['FGM']/self.home_player_stats[player]['FGA'],'.1%') self.home_player_stats[player]['PTS'] += points self.home_team_stats['FGM'] += 1 self.home_team_stats['FGA'] += 1 self.home_team_stats['FG%'] = format(self.home_team_stats['FGM']/self.home_team_stats['FGA'],'.1%') self.home_team_stats['PTS'] += points if points == 3: self.home_player_stats[player]['3PM'] += 1 self.home_player_stats[player]['3PA'] += 1 self.home_player_stats[player]['3P%'] = format(self.home_player_stats[player]['3PM']/self.home_player_stats[player]['3PA'],'.1%') self.home_team_stats['3PM'] += 1 self.home_team_stats['3PA'] += 1 self.home_team_stats['3P%'] = format(self.home_team_stats['3PM']/self.home_team_stats['3PA'],'.1%') except KeyError: try: self.away_player_stats[player]['FGM'] += 1 self.away_player_stats[player]['FGA'] += 1 self.away_player_stats[player]['FG%'] = format(self.away_player_stats[player]['FGM']/self.away_player_stats[player]['FGA'],'.1%') self.away_player_stats[player]['PTS'] += points self.away_team_stats['FGM'] += 1 self.away_team_stats['FGA'] += 1 self.away_team_stats['FG%'] = format(self.away_team_stats['FGM']/self.away_team_stats['FGA'],'.1%') self.away_team_stats['PTS'] += points if points == 3: self.away_player_stats[player]['3PM'] += 1 self.away_player_stats[player]['3PA'] += 1 self.away_player_stats[player]['3P%'] = format(self.away_player_stats[player]['3PM']/self.away_player_stats[player]['3PA'],'.1%') self.away_team_stats['3PM'] += 1 self.away_team_stats['3PA'] += 1 self.away_team_stats['3P%'] = format(self.away_team_stats['3PM']/self.away_team_stats['3PA'],'.1%') except KeyError: pass def addMissedShot(self, player, points): try: self.home_player_stats[player]['FGA'] += 1 self.home_player_stats[player]['FG%'] = format(self.home_player_stats[player]['FGM']/self.home_player_stats[player]['FGA'],'.1%') self.home_team_stats['FGA'] += 1 self.home_team_stats['FG%'] = format(self.home_team_stats['FGM']/self.home_team_stats['FGA'],'.1%') if points == 3: self.home_player_stats[player]['3PA'] += 1 self.home_player_stats[player]['3P%'] = format(self.home_player_stats[player]['3PM']/self.home_player_stats[player]['3PA'],'.1%') self.home_team_stats['3PA'] += 1 self.home_team_stats['3P%'] = format(self.home_team_stats['3PM']/self.home_team_stats['3PA'],'.1%') except KeyError: try: self.away_player_stats[player]['FGA'] += 1 self.away_player_stats[player]['FG%'] = format(self.away_player_stats[player]['FGM']/self.away_player_stats[player]['FGA'],'.1%') self.away_team_stats['FGA'] += 1 self.away_team_stats['FG%'] = format(self.away_team_stats['FGM']/self.away_team_stats['FGA'],'.1%') if points == 3: self.away_player_stats[player]['3PA'] += 1 self.away_player_stats[player]['3P%'] = format(self.away_player_stats[player]['3PM']/self.away_player_stats[player]['3PA'],'.1%') self.away_team_stats['3PA'] += 1 self.away_team_stats['3P%'] = format(self.away_team_stats['3PM']/self.away_team_stats['3PA'],'.1%') except KeyError: pass def takeShot(self, player, def_player, offense, defense, commentary): tendencies = player.tendencies loc = random.randint(1,100) close_chance = tendencies[0] mid_chance = tendencies[0] + tendencies[1] if loc <= close_chance: shot_chance = 52.1 + 16.3*((player.ratings['CLOSE'] - 75)/6 - (def_player.ratings['DEF'] - 75)/6) score_change = 2 elif loc <= mid_chance: shot_chance = 42.1 + 16.3*((player.ratings['MID'] - 75)/6 - (def_player.ratings['DEF'] - 75)/6) score_change = 2 else: shot_chance = 29.4 + 16.4*((player.ratings['THREE'] - 75)/6 - (def_player.ratings['DEF'] - 75)/6) score_change = 3 shot = random.randint(1,100) if shot <= shot_chance: if self.possession == 'HOME': self.home_score += score_change self.changePossession() elif self.possession == 'AWAY': self.away_score += score_change self.changePossession() player.addMadeShot(score_change) self.addMadeShot(player.name, score_change) if score_change == 2: if commentary: print('(' + str(self.time) + ') ' + offense.name + ': ' + player.name + ' hits a 2-pointer. ') elif score_change == 3: if commentary: print('(' + str(self.time) + ') ' + offense.name + ': ' + player.name + ' hits a 3-pointer. ') self.Assist(player, offense, commentary) else: player.addMissedShot(score_change) self.addMissedShot(player.name, score_change) if commentary: print('(' + str(self.time) + ') ' + offense.name + ': ' + player.name + ' misses a shot. ') self.Rebound(player, def_player, offense, defense, commentary) return def Rebound(self, shooter, defender, offense, defense, commentary): rebound_total = 0 for player in offense.players.items(): if shooter.name == player[1].name: rebound_total += player[1].ratings['OREB']*0.5 else: rebound_total += player[1].ratings['OREB'] for player in defense.players.items(): if defender.name == player[1].name: rebound_total += player[1].ratings['DREB']*.6 else: rebound_total += player[1].ratings['DREB'] rebound_chance = 0 rebound = random.randint(0,100) for player in offense.players.items(): if shooter.name == player[1].name: rebound_chance += 100*((player[1].ratings['OREB']*.5)/rebound_total) else: rebound_chance += 100*(player[1].ratings['OREB']/rebound_total) if rebound <= rebound_chance: player[1].addStat('REB') self.addStat(player[1].name, 'REB') if commentary: print(player[1].name + ' gets the rebound.\n') time.sleep(2) return for player in defense.players.items(): if defender.name == player[1].name: rebound_chance += 100*(player[1].ratings['DREB']*.6/rebound_total) else: rebound_chance += 100*(player[1].ratings['DREB']/rebound_total) if rebound <= rebound_chance: player[1].addStat('REB') self.addStat(player[1].name, 'REB') if commentary: print(player[1].name + ' gets the rebound.\n') time.sleep(2) self.changePossession() return def Assist(self, player, offense, commentary): assist = 20 for ast_player in offense.players.items(): if player.name == ast_player[1].name: pass else: assist += ast_player[1].ratings['PASS'] assist_chance = 0 assist_score = random.randint(1,100) for ast_player in offense.players.items(): assist_chance += 100*(ast_player[1].ratings['PASS']/assist) if assist_score <= assist_chance: ast_player[1].addStat('AST') self.addStat(ast_player[1].name, 'AST') if commentary: print(ast_player[1].name + ' assists. ') break if commentary: print(str(self.home_score) + '-' + str(self.away_score) + '\n') time.sleep(2) return class Tournament(): def __init__(self, standings, structure): self.seeds = [] for team in standings: self.seeds.append(team[1]) for i in range(len(self.seeds)): self.seeds[i].seed = i+1 self.structure = structure self.current_round = 1 if self.structure == 1: date = '0301' gameIDs = [(str(self.seeds[-3].teamID)+str(self.seeds[-2].teamID)+date), (str(self.seeds[-4].teamID)+str(self.seeds[-1].teamID)+date)] self.round_one = [Game(self.seeds[-3], self.seeds[-2], date, gameIDs[0]), Game(self.seeds[-4], self.seeds[-1], date, gameIDs[1])] def advanceTournament(self): if self.structure == 1: if self.current_round == 1: self.current_round = 2 date = '0303' gameIDs = [(str(self.seeds[0].teamID)+str(self.round_one[0].winner.teamID)+date), (str(self.seeds[3].teamID)+str(self.seeds[4].teamID)+date), (str(self.seeds[2].teamID)+str(self.seeds[5].teamID)+date), (str(self.seeds[1].teamID)+str(self.round_one[1].winner.teamID)+date)] self.round_two = [Game(self.seeds[0], self.round_one[0].winner, date, gameIDs[0]), Game(self.seeds[3], self.seeds[4], date, gameIDs[1]), Game(self.seeds[2], self.seeds[5], date, gameIDs[2]), Game(self.seeds[1], self.round_one[1].winner, date, gameIDs[3])] elif self.current_round == 2: self.current_round = 3 date = '0306' gameIDs = [(str(self.round_two[0].winner.teamID)+str(self.round_two[1].winner.teamID)+date), (str(self.round_two[2].winner.teamID)+str(self.round_two[3].winner.teamID)+date)] self.round_three = [Game(self.round_two[0].winner, self.round_two[1].winner, date, gameIDs[0]), Game(self.round_two[2].winner, self.round_two[3].winner, date, gameIDs[1])] elif self.current_round == 3: self.current_round = 4 date = '0309' gameID = str(self.round_three[0].winner.teamID) + str(self.round_three[1].winner.teamID) + date self.round_four = [Game(self.round_three[0].winner, self.round_three[1].winner, date, gameID)] def simRound(self): if self.current_round == 1: for game in self.round_one: RunGame(game, '') self.advanceTournament() elif self.current_round == 2: for game in self.round_two: RunGame(game, '') self.advanceTournament() elif self.current_round == 3: for game in self.round_three: RunGame(game, '') self.advanceTournament() elif self.current_round == 4: for game in self.round_four: RunGame(game, '') self.advanceTournament() def viewTournament(self): print('Currently in Round ' + str(self.current_round)) if self.current_round == 1: print('Round 1\nGame 1: ' + str(self.seeds[7].seed) + ' ' + self.seeds[7].name + ' vs ' + str(self.seeds[8].seed) + ' ' + self.seeds[8].name + '\nGame 2: ' + str(self.seeds[6].seed) + ' ' + self.seeds[6].name + ' vs ' + str(self.seeds[9].seed) + ' ' + self.seeds[9].name) print('\nQuarterfinals\nGame 3: ' + str(self.seeds[0].seed) + ' ' + self.seeds[0].name + ' vs Winner of Game 1\nGame 4: ' + str(self.seeds[3].seed) + ' ' + self.seeds[3].name + ' vs ' + str(self.seeds[4].seed) + ' ' + self.seeds[4].name + '\nGame 5: ' + str(self.seeds[2].seed) + ' ' + self.seeds[2].name + ' vs ' + str(self.seeds[5].seed) + ' ' + self.seeds[5].name + '\nGame 6: ' + str(self.seeds[1].seed) + ' ' + self.seeds[1].name + ' vs Winner of Game 2') else: print('Round 1\nGame 1: ' + str(self.round_one[0].winner.seed) + ' ' + self.round_one[0].winner.name + ' defeats ' + str(self.round_one[0].loser.seed) + ' ' + self.round_one[0].loser.name + '\nGame 2: ' + str(self.round_one[1].winner.seed) + ' ' + self.round_one[1].winner.name + ' defeats ' + str(self.round_one[1].loser.seed) + ' ' + self.round_one[1].loser.name) if self.current_round == 2: print('\nQuarterfinals\nGame 3: ' + str(self.seeds[0].seed) + ' ' + self.seeds[0].name + ' vs ' + str(self.round_one[0].winner.seed) + ' ' + self.round_one[0].winner.name + '\nGame 4: ' + str(self.seeds[3].seed) + ' ' + self.seeds[3].name + ' vs ' + str(self.seeds[4].seed) + ' ' + self.seeds[4].name + '\nGame 5: ' + str(self.seeds[2].seed) + ' ' + self.seeds[2].name + ' vs ' + str(self.seeds[5].seed) + ' ' + self.seeds[5].name + '\nGame 6: ' + str(self.seeds[1].seed) + ' ' + self.seeds[1].name + ' vs ' + str(self.round_one[1].winner.seed) + ' ' + self.round_one[1].winner.name) elif self.current_round > 2: print('\nQuarterfinals\nGame 3: ' + str(self.round_two[0].winner.seed) + ' ' + self.round_two[0].winner.name + ' defeats ' + str(self.round_two[0].loser.seed) + ' ' + self.round_two[0].loser.name + '\nGame 4: ' + str(self.round_two[1].winner.seed) + ' ' + self.round_two[1].winner.name + ' defeats ' + str(self.round_two[1].loser.seed) + ' ' + self.round_two[1].loser.name + '\nGame 5: ' + str(self.round_two[2].winner.seed) + ' ' + self.round_two[2].winner.name + ' defeats ' + str(self.round_two[2].loser.seed) + ' ' + self.round_two[2].loser.name + '\nGame 6: ' + str(self.round_two[3].winner.seed) + ' ' + self.round_two[3].winner.name + ' defeats ' + str(self.round_two[3].loser.seed) + ' ' + self.round_two[3].loser.name) if self.current_round < 3: print('\nSemifinals\nGame 7: Winner of Game 3 vs Winner of Game 4\nGame 8: Winner of Game 5 vs Winner of Game 6') elif self.current_round == 3: print("\nSemifinals\nGame 7: " + str(self.round_two[0].winner.seed) + " " + self.round_two[0].winner.name + " vs " + str(self.round_two[1].winner.seed) + " " + self.round_two[1].winner.name + "\nGame 8: " + str(self.round_two[2].winner.seed) + " " + self.round_two[2].winner.name + " vs " + str(self.round_two[3].winner.seed) + " " + self.round_two[3].winner.name) else: print("\nSemifinal\nGame 7: " + str(self.round_three[0].winner.seed) + " " + self.round_three[0].winner.name + " defeats " + str(self.round_three[0].loser.seed) + " " + self.round_three[0].loser.name + "\nGame 8: " + str(self.round_three[1].winner.seed) + " " + self.round_three[1].winner.name + " vs " + str(self.round_two[1].loser.seed) + " " + self.round_three[1].loser.name) if self.current_round < 4: print('\nFinals\nGame 9: Winner of Game 7 vs Winner of Game 8') else: print('\nFinals\nGame 9: ' + str(self.round_three[0].winner.seed) + ' ' + self.round_three[0].winner.name + ' vs ' + str(self.round_three[1].winner.seed) + ' ' + self.round_three[1].winner.name) def RunGame(game, commentary): tip_off = random.randint(0,1) game.setPossession(tip_off) if commentary == 'Y': commentary = True else: commentary = False while True: if game.checkTime(): break game.runPlay(commentary) if game.home_score > game.away_score: game.home_team.addWin(True) game.away_team.addLoss(True) game.setWinnerLoser(game.home_team, game.away_team) else: game.away_team.addWin(True) game.home_team.addLoss(True) game.setWinnerLoser(game.away_team, game.home_team) print(str(game.home_team.name) + ': ' + str(game.home_score)) print(str(game.away_team.name) + ': ' + str(game.away_score)) print() def main(): patriot_league = Conference('Patriot League', {}) team_names = ['American', 'Army', 'Boston', 'Bucknell', 'Colgate', 'Holy Cross', 'Lafayette', 'Lehigh', 'Loyola Maryland', 'Navy'] next_id = format(1, '03') games = [] next_game = 0 for team_name in team_names: patriot_league.addTeam(Team(team_name, next_id, patriot_league, {}, {})) next_id = format(int(next_id)+1,'03') while True: patriot_league.teams['American'].addPlayer(Player('Sa\'eed Nelson', patriot_league.teams['American'], 'PG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [40,40,20])) patriot_league.teams['American'].addPlayer(Player('Charlie Jones', patriot_league.teams['American'], 'SG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [30,50,20])) patriot_league.teams['American'].addPlayer(Player('Delante Jones', patriot_league.teams['American'], 'SF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [20,40,40])) patriot_league.teams['American'].addPlayer(Player('Leon Tolksdorf', patriot_league.teams['American'], 'PF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [60,30,10])) patriot_league.teams['American'].addPlayer(Player('Mark Gasperini', patriot_league.teams['American'], 'C', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [80,20,0])) patriot_league.teams['Army'].addPlayer(Player('Thoams Funk', patriot_league.teams['Army'], 'PG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [40,40,20])) patriot_league.teams['Army'].addPlayer(Player('Jordan Fox', patriot_league.teams['Army'], 'SG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [30,50,20])) patriot_league.teams['Army'].addPlayer(Player('Jacob Kessler', patriot_league.teams['Army'], 'SF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [20,40,40])) patriot_league.teams['Army'].addPlayer(Player('Luke Morrison', patriot_league.teams['Army'], 'PF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [60,30,10])) patriot_league.teams['Army'].addPlayer(Player('Mac Hoffman', patriot_league.teams['Army'], 'C', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [80,20,0])) patriot_league.teams['Boston'].addPlayer(Player('Kyle Foreman', patriot_league.teams['Boston'], 'PG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [40,40,20])) patriot_league.teams['Boston'].addPlayer(Player('Cedric Hankerson', patriot_league.teams['Boston'], 'SG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [30,50,20])) patriot_league.teams['Boston'].addPlayer(Player('Eric Fanning', patriot_league.teams['Boston'], 'SF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [20,40,40])) patriot_league.teams['Boston'].addPlayer(Player('Tyler Scanlon', patriot_league.teams['Boston'], 'PF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [60,30,10])) patriot_league.teams['Boston'].addPlayer(Player('Justin Alston', patriot_league.teams['Boston'], 'C', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [80,20,0])) patriot_league.teams['Bucknell'].addPlayer(Player('Stephen Brown', patriot_league.teams['Bucknell'], 'PG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [40,40,20])) patriot_league.teams['Bucknell'].addPlayer(Player('Kimbal MacKenzie', patriot_league.teams['Bucknell'], 'SG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [30,50,20])) patriot_league.teams['Bucknell'].addPlayer(Player('Avi Toomer', patriot_league.teams['Bucknell'], 'SF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [20,40,40])) patriot_league.teams['Bucknell'].addPlayer(Player('Zach Thomas', patriot_league.teams['Bucknell'], 'PF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [60,30,10])) patriot_league.teams['Bucknell'].addPlayer(Player('Nana Foulland', patriot_league.teams['Bucknell'], 'C', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [80,20,0])) patriot_league.teams['Colgate'].addPlayer(Player('Sean O\'Brien', patriot_league.teams['Colgate'], 'PG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [40,40,20])) patriot_league.teams['Colgate'].addPlayer(Player('Jordan Swopshire', patriot_league.teams['Colgate'], 'SG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [30,50,20])) patriot_league.teams['Colgate'].addPlayer(Player('Tom Rivard', patriot_league.teams['Colgate'], 'SF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [20,40,40])) patriot_league.teams['Colgate'].addPlayer(Player('Will Rayman', patriot_league.teams['Colgate'], 'PF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [60,30,10])) patriot_league.teams['Colgate'].addPlayer(Player('Malcolm Regisford', patriot_league.teams['Colgate'], 'C', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [80,20,0])) patriot_league.teams['Holy Cross'].addPlayer(Player('Anthony Thompson', patriot_league.teams['Holy Cross'], 'PG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [40,40,20])) patriot_league.teams['Holy Cross'].addPlayer(Player('Karl Charles', patriot_league.teams['Holy Cross'], 'SG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [30,50,20])) patriot_league.teams['Holy Cross'].addPlayer(Player('Robert Champion', patriot_league.teams['Holy Cross'], 'SF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [20,40,40])) patriot_league.teams['Holy Cross'].addPlayer(Player('Malachi Alexander', patriot_league.teams['Holy Cross'], 'PF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [60,30,10])) patriot_league.teams['Holy Cross'].addPlayer(Player('Matt Husek', patriot_league.teams['Holy Cross'], 'C', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [80,20,0])) patriot_league.teams['Lafayette'].addPlayer(Player('Nick Lindner', patriot_league.teams['Lafayette'], 'PG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [40,40,20])) patriot_league.teams['Lafayette'].addPlayer(Player('Eric Stafford', patriot_league.teams['Lafayette'], 'SG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [30,50,20])) patriot_league.teams['Lafayette'].addPlayer(Player('Lukas Jarrett', patriot_league.teams['Lafayette'], 'SF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [20,40,40])) patriot_league.teams['Lafayette'].addPlayer(Player('Paulius Zalys', patriot_league.teams['Lafayette'], 'PF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [60,30,10])) patriot_league.teams['Lafayette'].addPlayer(Player('Matt Klinewski', patriot_league.teams['Lafayette'], 'C', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [80,20,0])) patriot_league.teams['Lehigh'].addPlayer(Player('Kahron Ross', patriot_league.teams['Lehigh'], 'PG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [40,40,20])) patriot_league.teams['Lehigh'].addPlayer(Player('Kyle Leufroy', patriot_league.teams['Lehigh'], 'SG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [30,50,20])) patriot_league.teams['Lehigh'].addPlayer(Player('Austin Price', patriot_league.teams['Lehigh'], 'SF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [20,40,40])) patriot_league.teams['Lehigh'].addPlayer(Player('Matt Holba', patriot_league.teams['Lehigh'], 'PF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [60,30,10])) patriot_league.teams['Lehigh'].addPlayer(Player('Tim Kempton', patriot_league.teams['Lehigh'], 'C', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [80,20,0])) patriot_league.teams['Loyola Maryland'].addPlayer(Player('Andre Walker', patriot_league.teams['Loyola Maryland'], 'PG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [40,40,20])) patriot_league.teams['Loyola Maryland'].addPlayer(Player('Andrew Kostecka', patriot_league.teams['Loyola Maryland'], 'SG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [30,50,20])) patriot_league.teams['Loyola Maryland'].addPlayer(Player('James Fives', patriot_league.teams['Loyola Maryland'], 'SF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [20,40,40])) patriot_league.teams['Loyola Maryland'].addPlayer(Player('Jarred Jones', patriot_league.teams['Loyola Maryland'], 'PF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [60,30,10])) patriot_league.teams['Loyola Maryland'].addPlayer(Player('Cam Gregory', patriot_league.teams['Loyola Maryland'], 'C', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [80,20,0])) patriot_league.teams['Navy'].addPlayer(Player('Hasan Abdullah', patriot_league.teams['Navy'], 'PG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [40,40,20])) patriot_league.teams['Navy'].addPlayer(Player('Shawn Anderson', patriot_league.teams['Navy'], 'SG', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [30,50,20])) patriot_league.teams['Navy'].addPlayer(Player('Bryce Dulin', patriot_league.teams['Navy'], 'SF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [20,40,40])) patriot_league.teams['Navy'].addPlayer(Player('Tom Lacey', patriot_league.teams['Navy'], 'PF', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [60,30,10])) patriot_league.teams['Navy'].addPlayer(Player('Edward Alade', patriot_league.teams['Navy'], 'C', {'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}, 20, 40, [80,20,0])) break choice = input("Choose an option: \n1) Create A Team\n2) Use Default Team\n") if choice == str(1): team_name = input("Enter team name: ") positions = ['point guard', 'shooting guard', 'small forward', 'power forward', 'center', 'bench'] player_names = [] player_ratings = [] for pos in positions: player_names.append(input("Enter " + str(pos) + "'s name: ")) ratings_choice = input("Would you like to choose player's ratings?\n") if ratings_choice == "Y": for pos in positions: player_ratings.append({}) player_ratings[-1]['CLOSE'].append(input("Enter CLOSE rating: ")) player_ratings[-1]['MID'].append(input("Enter MID rating: ")) player_ratings[-1]['THREE'].append(input("Enter THREE rating: ")) player_ratings[-1]['BALL'].append(input("Enter BALL rating: ")) player_ratings[-1]['PASS'].append(input("Enter PASS rating: ")) player_ratings[-1]['OREB'].append(input("Enter OREB rating: ")) player_ratings[-1]['DREB'].append(input("Enter DREB rating: ")) player_ratings[-1]['DEF'].append(input("Enter DEF rating: ")) player_ratings[-1]['STL'].append(input("Enter STL rating: ")) else: for pos in positions: player_ratings.append({'CLOSE':80,'MID':80,'THREE':80,'BALL':80,'PASS':80,'OREB':30,'DREB':70,'DEF':80,'STL':80}) replace_choice = input("Would you like to replace a current team?\n") if replace_choice == "Y": print("Choose team: ") for team in patriot_league.teams.items(): print(team[0]) team_choice = input("\n") team_names.remove(team_choice) team_names.append(team_name) user_team = patriot_league.teams[team_choice] player_remove_list = [] for player in user_team.players.items(): player_remove_list.append(player[0]) for player in player_remove_list: user_team.removePlayer(player) user_team.setName(team_name) user_team.addPlayer(Player(player_names[0], user_team, 'PG', player_ratings[0], 20, 40, [40,40,20])) user_team.addPlayer(Player(player_names[1], user_team, 'SG', player_ratings[1], 20, 40, [30,50,20])) user_team.addPlayer(Player(player_names[2], user_team, 'SF', player_ratings[2], 20, 40, [20,40,40])) user_team.addPlayer(Player(player_names[3], user_team, 'PF', player_ratings[3], 20, 40, [60,30,10])) user_team.addPlayer(Player(player_names[4], user_team, 'C', player_ratings[4], 20, 40, [80,20,0])) user_team.addPlayer(Player(player_names[5], user_team, 'PG', player_ratings[0], 20, 0, [40,40,20])) else: team_names.append(team_name) patriot_league.addTeam(Team(team_name, next_id, patriot_league, {}, {})) next_id = format(int(next_id)+1,'03') user_team = patriot_league.teams[team_name] user_team.addPlayer(Player(player_names[0], user_team, 'PG', player_ratings[0], 20, 40, [40,40,20])) user_team.addPlayer(Player(player_names[1], user_team, 'SG', player_ratings[1], 20, 40, [30,50,20])) user_team.addPlayer(Player(player_names[2], user_team, 'SF', player_ratings[2], 20, 40, [20,40,40])) user_team.addPlayer(Player(player_names[3], user_team, 'PF', player_ratings[3], 20, 40, [60,30,10])) user_team.addPlayer(Player(player_names[4], user_team, 'C', player_ratings[4], 20, 40, [80,20,0])) user_team.addPlayer(Player(player_names[5], user_team, 'PG', player_ratings[0], 20, 0, [40,40,20])) elif choice == str(2): print("\nChoose a team: ") for team in patriot_league.teams.items(): print(team[0]) team_choice = input("\n") user_team = patriot_league.teams[team_choice] print() print("Choose starters: ") for player in user_team.players.items(): print(player[0]) print() user_team.setStarter(input("Enter starting point guard: "), "PG") user_team.setStarter(input("Enter starting shooting guard: "), "SG") user_team.setStarter(input("Enter starting small forward: "), "SF") user_team.setStarter(input("Enter starting power forward: "), "PF") user_team.setStarter(input("Enter starting center: "), "C") for matchup in itertools.permutations(team_names, 2): games.append(patriot_league.teams[matchup[0]].addGame(True, patriot_league.teams[matchup[1]])) games.sort(key=lambda x: int(x.gameID[-4:])) current_date = games[next_game].gameID[-4:] while True: menu_choice = input("Choose a menu:\n1) Main Menu\n2) Team Menu\n3) End Game\n\n") if menu_choice == str(1): print('1) Simulate Next Day\n2) Simulate All Games\n3) View Standings\n4) View Games By Day\n5) View Game Info\n6) View Team Info\n7) View Team Usage\n8) View Team Schedule\n9) View Player Info\n10) View Game Stats\n11) View Stats\n12) Back') if next_game + 1 > len(games): choice = input('12) View Tournament\n13) Sim next tournament round\n14) Back\n\nIt is ' + str(current_date) + '. What do you want to do?\n\n') else: choice = input('\n\nIt is ' + str(current_date) + '. What do you want to do?\n\n') if choice == str(1): commentary = input("With commentary? ") try: for game in games[next_game:]: if game.gameID[-4:] == current_date: RunGame(games[next_game], commentary) next_game += 1 else: current_date = games[next_game].gameID[-4:] break patriot_league.setStandings() if next_game + 1 > len(games): PL_tournament = Tournament(patriot_league.standings, 1) except IndexError: print("No more games.") if choice == str(2): commentary = input("With commentary? ") while True: try: RunGame(games[next_game], commentary) next_game += 1 except IndexError: print("No more games.") current_date = int(games[-1].gameID[-4:]) + 1 break patriot_league.setStandings() PL_tournament = Tournament(patriot_league.standings, 1) if choice == str(3): patriot_league.viewStandings() if choice == str(4): date = input("What day? ") if date == 'today': patriot_league.viewGamesByDay(current_date) else: patriot_league.viewGamesByDay(date) if choice == str(5): print("Choose game: ") i = 0 for game in games: print(i) try: print(''+game.viewTeams()) except TypeError: pass i += 1 game = input("") games[int(game)].viewInfo() if choice == str(6): team_name = input("Enter team name: ") patriot_league.teams[team_name].viewInfo() if choice == str(7): team_name = input("Enter team name: ") patriot_league.teams[team_name].viewUsage() if choice == str(8): team_name = input("Enter team name: ") patriot_league.teams[team_name].viewSchedule() if choice == str(9): team_name = input("Enter team name: ") print() for player in patriot_league.teams[team_name].players.items(): print(player[0]) print() player_name = input("Enter player name: ") patriot_league.teams[team_name].players[player_name].viewInfo() if choice == str(10): if next_game == 0: print("No stats yet") else: print("Choose game:\n") for i in range(0,int(next_game)): print(i) try: print(''+games[i].viewTeams()) except TypeError: pass game = input("") games[int(game)].viewStats() if choice == str(11): team_name = input("Enter team name: ") player_team = input("Team or player stats? ") if player_team == 'team': patriot_league.teams[team_name].viewStats() else: print() for player in patriot_league.teams[team_name].players.items(): print(player[0]) print() player_name = input("Enter player name: ") patriot_league.teams[team_name].players[player_name].viewStats() if next_game + 1 > len(games): if choice == str(12): if PL_tournament != None: PL_tournament.viewTournament() hold = input("") if choice == str(13): PL_tournament.simRound() if choice == str(14): continue else: if choice == 12: continue print() elif menu_choice == str(2): while True: choice = input("What do you want to do?\n1) View Team Info\n2) View Team Schedule\n3) View Roster\n4) Set Team Usage\n5) View Game Stats\n6) View Stats\n7) Set Minutes\n8) Back\n\n") if choice == str(1): user_team.viewInfo() hold = input("") elif choice == str(2): user_team.viewSchedule() hold = input("") elif choice == str(3): for player in user_team.players.items(): print(player[1].pos + ': ' + player[0]) while True: player_choice = input("Choose player to view more info (if done, hit enter): ") print() if player_choice == "": break else: user_team.players[player_choice].viewInfo() user_team.players[player_choice].viewStats() hold = input("") elif choice == str(4): while True: total_usage = 0 for player in user_team.players.items(): while True: player_usage = int(input("Enter " + player[0] + "'s usage: ")) if player_usage >= 10: break else: print("Usage must be at least 10.") total_usage += player_usage player[1].usage = player_usage if total_usage == 100: break else: print("\nUsage does not add up to 100%. Try again.\n") elif choice == str(5): if next_game == 0: print("No stats yet\n") else: print("Choose game:\n") for game in user_team.schedule.items(): if game[1].completed == True: print(game[0]) try: print(''+game[1].viewTeams()) except TypeError: pass game = input("") user_team.schedule[game].viewStats() hold = input("") elif choice == str(6): user_team.viewStats() hold = input("") elif choice == str(7): while True: available_minutes = user_team.checkMinutes() print("Current Minutes") for player in user_team.players.items(): print(player[0] + ': ' + str(player[1].minutes)) print("You currently have " + str(available_minutes) + ' minutes available.') player_choice = input("Enter player name to adjust minutes: ") if player_choice == '': break else: while True: new_minutes = input("Enter minutes: ") if (new_minutes-user_team.players[player_choice].minutes) > available_minutes: print("Not enough minutes!") else: user_team.players[player_choice].minutes = new_minutes break elif choice == str(8): break elif menu_choice == str(3): break main()
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question