The movie collection program found below is currently missing two important pieces of functionality---it doesn't add movies to the collection, nor is it able to print the longest movies in the collection. Provided for you is the Movie class which contains the title and duration for a particular movie, and the MovieCollection class which is responsible for maintaining a collection of movies. Your task is to implement missing functionality by a) completing the interactive loop, and b) defining a print_longest_movies method on the MovieCollection class. a) Completing the interactive loop To complete the interactive loop, you must instantiate a Movie object using the information provided by the user and add it to the MovieCollection object using the provided add_movie method. b) Defining print_longest_movies This method is to take no arguments and print the title and duration of the top three longest movies in descending order (i.e. highest to lowest). Additionally, each movie should be numbered in the output (i.e. the longest movie is 1, the second longest is 2, etc). Here's an example of output which could be produced when print_longest_movies is called: 1. Titanic (194 minutes) 2. Vertigo (128 minutes) 3. Jaws (124 minutes) In order to sort the movies you should call the sort list method (documented here). You will need to make use of the sort method's two named arguments when calling it: key and reverse: The key named argument can be provided with the name of a function (no parentheses). That function will be called for each item, and sorting will be based on the values returned by the function. The reverse named argument can be provided with a boolean which determines whether the sort order should be reversed or not. Hint: A function which returns the duration of a movie has already been defined for you, and can be used as the key named argument for sort. Requirements To achieve full marks for this task, you must follow the instructions above when writing your solution. Additionally, your solution must adhere to the following requirements: You must use the sort list method with appropriate named arguments to sort movies in descending order of duration. You must make appropriate use of a loop to print the longest movies. You must not use a return, break, or continue statement in print_longest_movies. You must limit the number of movies printed to three. If there are fewer than three movies in the collection, all of them should be printed. Example Runs Run 1 (more than three movies) Movie title (or blank to finish): Vertigo Movie duration (minutes): 128 Movie title (or blank to finish): Titanic Movie duration (minutes): 194 Movie title (or blank to finish): Rocky Movie duration (minutes): 120 Movie title (or blank to finish): Jaws Movie duration (minutes): 124 Movie title (or blank to finish): = Longest movies in the collection = 1. Titanic (194 minutes) 2. Vertigo (128 minutes) 3. Jaws (124 minutes) Run 2 (fewer than three movies) Movie title (or blank to finish): Braveheart Movie duration (minutes): 178 Movie title (or blank to finish): = Longest movies in the collection = 1. Braveheart (178 minutes) Your code should execute as closely as possible to the example runs above. To check for correctness, ensure that your program gives the same outputs as in the examples, as well as trying it with other inputs. class Movie: def__init__(self, title, duration): self.title = title self.duration = duration def get_movie_duration(movie): return movie.duration class MovieCollection: def__init__(self): self.movies = [] defadd_movie(self, movie): self.movies.append(movie) # b) Write your method here collection = MovieCollection() while True: title = input('Movie title (or blank to finish): ') if title == '': break duration = int(input('Movie duration (minutes): ')) # a) Add the movie to the collection here
For this task, you are to complete a program which manages a movie collection.
Instructions
The movie collection program found below is currently missing two important pieces of functionality---it doesn't add movies to the collection, nor is it able to print the longest movies in the collection.
Provided for you is the Movie class which contains the title and duration for a particular movie, and the MovieCollection class which is responsible for maintaining a collection of movies. Your task is to implement missing functionality by a) completing the interactive loop, and b) defining a print_longest_movies method on the MovieCollection class.
a) Completing the interactive loop
To complete the interactive loop, you must instantiate a Movie object using the information provided by the user and add it to the MovieCollection object using the provided add_movie method.
b) Defining print_longest_movies
This method is to take no arguments and print the title and duration of the top three longest movies in descending order (i.e. highest to lowest). Additionally, each movie should be numbered in the output (i.e. the longest movie is 1, the second longest is 2, etc). Here's an example of output which could be produced when print_longest_movies is called:
1. Titanic (194 minutes)2. Vertigo (128 minutes)
3. Jaws (124 minutes)
In order to sort the movies you should call the sort list method (documented here). You will need to make use of the sort method's two named arguments when calling it: key and reverse:
-
The key named argument can be provided with the name of a function (no parentheses). That function will be called for each item, and sorting will be based on the values returned by the function.
-
The reverse named argument can be provided with a boolean which determines whether the sort order should be reversed or not.
Hint: A function which returns the duration of a movie has already been defined for you, and can be used as the key named argument for sort.
Requirements
To achieve full marks for this task, you must follow the instructions above when writing your solution. Additionally, your solution must adhere to the following requirements:
- You must use the sort list method with appropriate named arguments to sort movies in descending order of duration.
- You must make appropriate use of a loop to print the longest movies.
- You must not use a return, break, or continue statement in print_longest_movies.
- You must limit the number of movies printed to three. If there are fewer than three movies in the collection, all of them should be printed.
Example Runs
Run 1 (more than three movies)
Movie title (or blank to finish): VertigoMovie duration (minutes): 128
Movie title (or blank to finish): Titanic
Movie duration (minutes): 194
Movie title (or blank to finish): Rocky
Movie duration (minutes): 120
Movie title (or blank to finish): Jaws
Movie duration (minutes): 124
Movie title (or blank to finish):
= Longest movies in the collection =
1. Titanic (194 minutes)
2. Vertigo (128 minutes)
3. Jaws (124 minutes)
Run 2 (fewer than three movies)
Movie title (or blank to finish): BraveheartMovie duration (minutes): 178
Movie title (or blank to finish):
= Longest movies in the collection =
1. Braveheart (178 minutes)
Your code should execute as closely as possible to the example runs above. To check for correctness, ensure that your program gives the same outputs as in the examples, as well as trying it with other inputs.
Step by step
Solved in 2 steps with 3 images