7.15 Ch 8 Custom lab for SNHU Online – Program: Sorting movies (Lists and Dictionaries) (Python 3)
I almost have this code right, i cannot figure out why i am getting this error. Its a long problem. I pasted that and my current code with the output and error..7.15 Ch 8 Custom lab for SNHU Online – Program: Sorting movies (Lists and Dictionaries) (Python 3)
(1) Build a dictionary that contains the movie collection below. Hint: Combine movie title and director into a list.
Year Title Director 2005 Munich Steven Spielberg 2006 The Prestige Christopher Nolan 2006 The Departed Martin Scorsese 2007 Into the Wild Sean Penn 2008 The Dark Knight Christopher Nolan 2009 Mary and Max Adam Elliot 2010 The King's Speech Tom Hooper 2011 The Artist Michel Hazanavicius 2011 The Help Tate Taylor 2012 Argo Ben Affleck 2013 12 Years a Slave Steve McQueen 2014 Birdman Alejandro G. Inarritu 2015 Spotlight Tom McCarthy 2016 The BFG Steven Spielberg
(2) Prompt the user for a single year and output the movie title(s) and director(s) from that year. Output N/A if the year is invalid. (4 pts)
Ex:
Enter a year between 2005 and 2016: 2011 The Artist, Michel Hazanavicius The Help, Tate Taylor
(3) After prompting the user for a year and displaying the title(s) and directors(s) from that year, display a menu. The menu enables a user to display the movies sorted by year, director, or movie title. Each option is represented by a single character.
The program initially outputs the menu, and outputs the menu after a user chooses an option. If an invalid character is entered, continue to prompt for a valid choice. The program ends when the user chooses the option to Quit. Hint: Implement Quit before implementing other options. For this step, the other options do nothing. (1 pt)
Ex:
Enter a year between 2005 and 2016: 2011 The Artist, Michel Hazanavicius The Help, Tate Taylor MENU Sort by: y - Year d - Director t - Movie title q - Quit Choose an option:
(4) Implement the sort by year menu option. Note: There is a newline and a tab between the year and the movie title/director. (2 pts)
Ex:
... Choose an option: y 2005: Munich, Steven Spielberg 2006: The Prestige, Christopher Nolan The Departed, Martin Scorsese 2007: Into the Wild, Sean Penn 2008: The Dark Knight, Christopher Nolan ...
(5) Implement the sort by director menu option. For directors with multiple films on the list, order their films by year. Note: There is a newline and a tab between the director’s name and the movie title/year. (3 pts)
Ex:
... Choose an option: d Adam Elliot: Mary and Max, 2009 Alejandro G. Inarritu: Birdman, 2014 Ben Affleck: Argo, 2012 Christopher Nolan: The Dark Knight, 2008 The Prestige, 2006 ...
(6) Implement the sort by movie title menu option. Note: There is a newline and a tab between the movie title and the movie director/year. (2 pts)
Ex:
... Choose an option: t 12 Years a Slave: Steve McQueen, 2013 Argo: Ben Affleck, 2012 Birdman: Alejandro G. Inarritu, 2014 Into the Wild: Sean Penn, 2007 ...
moviesDict = {2005: [[‘Munich’,’Steven Spielberg’]],
2006: [[‘The Prestige’,’Christopher Nolan’],[‘The Departed’,’Martin Scorsese’]],
2007: [[‘Into the Wild’, ‘Sean Penn’]],
2008: [[‘The Dark Knight’, ‘Christopher Nolan’]],
2009: [[‘Mary and Max’, ‘Adam Elliot’]],
2010: [[“The King’s Speech”,’Tom Hooper’]],
2011: [[‘The Artist’, ‘Michel Hazanavicius’],[‘The Help’, ‘Tate Taylor’]],
2012: [[‘Argo’, ‘Ben Affleck’]],
2013: [[’12 Years a Slave’, ‘Steve McQueen’]],
2014: [[‘Birdman’, ‘Alejandro G. Inarritu’]],
2015: [[‘Spotlight’, ‘Tom McCarthy’]],
2016: [[‘The BFG’, ‘Steven Spielberg’]]}
year = int(input(“Enter a year between 2005 and 2016:n”))
if(year<2005 or year>2016):
print(“N/A”)
else:
movies = moviesDict[year]
for movie in movies:
print(movie[0]+”, “+movie[1])
var = 1
print(“”)
while var==1:
print(“MENU”)
print(“Sort by:”)
print(“y – Year”)
print(“d – Director”)
print(“t – Movie title”)
print(“q – Quit”)
print(“”)
option = input(“Choose an option:n”)
if(option == ‘y’):
for key in sorted(moviesDict.keys()):
print(key,end=’:’)
print(“”)
for movie in moviesDict[key]:
print(“t”+movie[0]+”, “+movie[1])
print(“”)
elif(option == ‘d’):
dirDict = {}
for key in sorted(moviesDict.keys()):
for movie in moviesDict[key]:
dire = movie[1]
if dire in dirDict:
dirDict[dire].append([movie[0],key])
else:
dirDict[dire] = [[movie[0],key]]
for key in sorted(dirDict.keys()):
print(key,end=’:’)
print(“”)
for dire in dirDict[key]:
print(“t”+ str(dire[0])+ “, “+str(dire[1]))
print(“”)
elif(option == ‘t’):
titleDict = {}
for key in sorted(moviesDict.keys()):
for movie in moviesDict[key]:
title = movie[0]
if title in titleDict:
titleDict[title].append([movie[1],key])
else:
titleDict[title] = [[movie[1],key]]
for key in sorted(titleDict.keys()):
print(key,end=’:’)
print(“”)
for title in titleDict[key]:
print(“t”+str(title[0])+”, “+str(title[1]))
print(“”)
elif(option == ‘q’):
break;
else:
print(“Invalid option”)
Enter a year between 2005 and 2016:
The Artist, Michel Hazanavicius
The Help, Tate Taylor
MENU
Sort by:
y – Year
d – Director
t – Movie title
q – Quit
Choose an option:
Traceback (most recent call last):
File “main.py”, line 33, in <module>
option = input(“Choose an option:n”)
EOFError: EOF when reading a line