Question: Verify that your Movie class code handles keys - i.e. accepts None appropriately. class Movie : Defines data for a single movie: title, year,

Verify that your Movie class code handles keys - i.e. accepts None appropriately.

class Movie:

"""

Defines data for a single movie: title, year, director, rating, genres.

"""

# Constants

MIN_RATING = 0

MAX_RATING = 10

FIRST_YEAR = 1888

GENRES = ("science fiction", "fantasy", "drama",

"romance", "comedy", "zombie", "action",

"historical", "horror", "war", "mystery")

# Defines a range of valid integer genre codes:

GENRE_CODES = range(len(GENRES))

@staticmethod

def genres_menu():

"""

-------------------------------------------------------

Creates a string of Movie genres in the format:

0 science fiction

1 fantasy

2 drama

...

Use: s = Movie.genres_menu()

Use: print(Movie.genres_menu())

-------------------------------------------------------

Returns:

string - A numbered string of Movie genres.

-------------------------------------------------------

"""

s = 'genres'

for index, genre in enumerate(Movie.GENRES):

s += ' {} {}' .format(index,genre)

return s

def __init__(self, title, year, director, rating, genres):

"""

-------------------------------------------------------

Initializes a Movie object.

Use: movie = Movie(title, year, director, rating, genres)

-------------------------------------------------------

Parameters:

title - movie title (str)

year - year of release (int)

director - name of director (str)

rating - rating of 1 - 10 from IMDB (float)

genres - numbers representing movie genres_list (list of int)

Returns:

A new Movie object (Movie)

-------------------------------------------------------

"""

assert year >= Movie.FIRST_YEAR, "Movie year must be >= {}".format(

Movie.FIRST_YEAR)

assert rating is None or Movie.MIN_RATING <= rating <= Movie.MAX_RATING, \

"Movie ratings must be between {} and {}".format(

Movie.MIN_RATING, Movie.MAX_RATING)

assert genres is None or genres == [] or min(genres) in Movie.GENRE_CODES, "Invalid genre code {}".format(

min(genres))

assert genres is None or genres == [] or max(genres) in Movie.GENRE_CODES, "Invalid genre code {}".format(

max(genres))

self.title = title

self.year = year

self.director = director

self.rating = rating

self.genres = genres

def __str__(self):

"""

-------------------------------------------------------

Creates a formatted string of movie data.

Use: print(movie)

Use: print( "{}".format(movie))

Use: string = str(movie)

-------------------------------------------------------

Returns:

string - the formatted contents of movie (str)

-------------------------------------------------------

"""

# Generate the list of genres as a string.

genres_list = self.genres_string()

string = """Title: {}

Year: {}

Director: {}

Rating: {}

Genres: {}""".format(self.title, self.year, self.director, self.rating, genres_list)

return string

while testing I used:

from Movie2 import Movie

key = Movie('Juno', 2007, None, None, None)

print(key)

I know I need to make changes to the movie class functions __init__ and __str__

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!