def team_average(filename): numberOfGames = 0 soxWins = 0 try: with open(filename, 'r') as file: for line in file: numberOfGames += 1 game = line.split() scores = game[1] scores_list = scores.split('-') print('scores_list: {}'.format(scores_list)) for score in scores_list: if (int(score[0]) - int(score[1])) > 0: soxWins += 1 average_win = int(soxWins / numberOfGames) * 100 team_average('xxxxxx') print(team_average('red_sox.txt')) except: print(filename, "Cannot be opened") team_average('red_sox.txt')This is why print statements are so useful
results:
Output:C:\Python35\python.exe M:/python/e-h/f/forum/misc4.py
scores_list: ['Red']
red_sox.txt Cannot be opened
- because score has 'Red' in it, it causes an exception (but not a file exception)
- The exception is caught, but displays the wrong message (becuase not being qualified)
adding one more print statement makes the problem very clear:
def team_average(filename): numberOfGames = 0 soxWins = 0 try: with open(filename, 'r') as file: for line in file: numberOfGames += 1 game = line.split() print('game: {}'.format(game)) scores = game[1] scores_list = scores.split('-') print('scores_list: {}'.format(scores_list)) for score in scores_list: if (int(score[0]) - int(score[1])) > 0: soxWins += 1 average_win = int(soxWins / numberOfGames) * 100 team_average('xxxxxx') print(team_average('red_sox.txt')) except: print(filename, "Cannot be opened") if __name__ == '__main__': team_average('red_sox.txt')result:
Output:game: ['2011-07-02', 'Red', 'Sox', '@', 'Astros', 'Win', '7-5']
scores_list: ['Red']
red_sox.txt Cannot be opened