Answer:
see explaination
Explanation:
Python version : 2.7
Python program to read an input file with specified number of records to read
and output the top 3 ranked actors
The format of input file:
<number of records to read>
<actor_name>,<movie_name>
<actor_name>,<movie_name>
....
'''
#define the file name
filename = 'actors_movies.txt'
# create an empty dictionary to contain the actor name as key and number of movies they have acted as value
actors_movie_count = {}
# open the flie
fp = open(filename)
line = fp.readline() # read the first line
count = int(line)
i = 0
# loop to read count number of lines from file
while i < count:
line = fp.readline() # read a line
data = line.split(",") # split the input data into list of strings using comma as the delimiter
# check if actor name is present in the dictionary, then add 1 to its value
# strip is used to remove any leading or trailing space
if data[0].strip() in actors_movie_count:
actors_movie_count[data[0].strip()] += 1
else: # else insert a new record with actor name as its key and 1 as value
actors_movie_count[data[0].strip()] = 1
i += 1
# close the file
fp.close()
# get the list of names of actors and list of number of movies they have acted
actors = actors_movie_count.keys()
num_movies = actors_movie_count.values()
# loop to sort the actors list and num_movies list in descending order of count of movies
for i in range(len(num_movies)-1):
max = i
for j in range(i+1,len(num_movies)):
if num_movies[j] > num_movies[max]:
max = j
if max != i:
actors[max], actors[i] = actors[i], actors[max]
num_movies[max], num_movies[i] = num_movies[i], num_movies[max]
# rank the actors to add top 3 ranked actors to rank_actors list
rank = 1
rank_actors = []
# add the first actor to list
rank_actors.append(actors[0])
# loop from second to end of actors list
for i in range(1,len(actors)):
# if this actor has same number of movies as the actor before him, then assign same rank
if num_movies[i] == num_movies[i-1]:
# if rank <= 3, add the actor in rank_actors list
if rank <= 3:
rank_actors.append(actors[i])
else: # rank > 3, exit the loop
break
else: # assign 1 more rank that the previous
rank += 1
# if rank <= 3, add the actor in rank_actors list
if rank <= 3:
rank_actors.append(actors[i])
else: # rank > 3, exit the loop
break
# loop to display the top 3 ranked actors
for actor in rank_actors:
print(actor)
#end of program
see attachment for the program screenshot and output