Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def open_file(filename):
- try:
- file = open(filename, 'r')
- except:
- file = None
- # try to open file
- # except: return none
- return file
- def create_players_dict(file_stream):
- the_dict = {}
- for line in file_stream:
- rank, name, country, rating, byear = line.split(';')
- lastname, firstname = name.split(',')
- #clear whitespace from last and firstname
- firstname = firstname.strip()
- lastname = lastname.strip()
- country = country.strip()
- key = "{}{}".format(firstname, lastname)
- value = (int(rank), country, int(rating), int(byear))
- the_dict[key] = value
- return the_dict
- def create_countries_dict(dict_players):
- country_dict = {}
- # chess_player = name, chess_player_data = tuple of attributes
- for chess_players, chess_players_data in dict_players.items():
- country = chess_players_data[1]
- if country in country_dict:
- name_list = country_dict[country]
- name_list.append(chess_players)
- else:
- country_dict[country] = [chess_players] # initilize new list w. 1 name and add to dict
- return country_dict
- def print_sorted(dict_countries, dict_players):
- sorted_dict = sorted(dict_countries.items())
- for key, players in sorted_dict:
- avrage_rating = get_avrage_rating(players, dict_players)
- print(avrage_rating)
- return
- def get_avrage_rating(players, dict_players):
- total = 0
- for player in players:
- total += dict_players[player][2]
- return total/len(players)
- def printHelper(dictionary):
- for key, value in dictionary.items():
- print(key, value)
- # Main starts here
- filename = input("Enter filename: ")
- file_stream = open_file(filename)
- if file_stream:
- dict_players = create_players_dict(file_stream)
- printHelper(dict_players)
- dict_countries = create_countries_dict(dict_players)
- printHelper(dict_countries)
- print_sorted(dict_countries, dict_players)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement