我有一个像这样的问题
为函数findActor编写合同,docstring和实现,该函数获取电影标题和角色的名称,并返回在给定电影中播放给定角色的演员/女演员。如果找不到给定的电影或给定的字符,它会输出一条错误消息并返回一个空字符串
我已经完成了以下有助于这样做的功能。 myIMDb是一个全局字典,设置为空的dic开始
def addMovie (title, charList, actList):
"""The function addMovie takes a title of the movie, a list of characters,
and a list of actors. (The order of characters and actors match one
another.) The function addMovie adds a pair to myIMDb. The key is the title
of the movie while the value is a dictionary that matches characters to
actors"""
dict2 = {}
for i in range (0, len(charList)):
dict2 [charList[i]] = actList[i]
myIMDb[len(myIMDb)] = {title: dict2}
return myIMDb
def listMovies():
"""returns a list of titles of all the movies in the global variable myIMDb"""
titles = []
for i in range (len(myIMDb)):
titles.append((list(myIMDb[i].keys())))
return titles
这是我遇到问题的地方。当我想编写findActor函数时,我没有得到任何回报。我没有完成这个功能,但我认为我做了一些根本错误的事情。我觉得我走错了路,而且越多,我写的越多,越来越多。这就是我所拥有的。任何关于如何纠正这艘沉船的建议都将不胜感激。
def findActor(title, name):
myIMDb = {}
for i in range (len(myIMDb)):
if title == myIMDb[i].keys():
if name == myIMDb[i].get(name):
return myIMDb[i].get(name)
else:
return "Error: No Movie found"
答案 0 :(得分:1)
在使用之前,您需要在myIMDB
填充findActor
字典。
另外,我建议将myIMDB
直接从移动标题映射到字符。换句话说,您应该myIMDb[len(myIMDb)] = {title: dict2}
执行addMoive
而不是myIMDb[title] = dict2
{/ 1}}。
这样,当你需要查找标题和角色时,你可以简单地做:
def findActor(title, name):
if title in myIMDb:
if name in myIMDb[title]:
return myIMDb[title][name]
return "Error: No movie found"
答案 1 :(得分:1)
首先要学习的是,使用任何语言编程,都是将任务减少到子任务。在这里,为什么不首先创建一个单个电影的角色和演员字典。如果你不能这样做,那么你将无法完成整个项目。
在你完成这项工作后,也许其他一切都将落实到位。
警告:在现实世界中,偶尔会有一个以上的角色扮演一个角色 - 例如 - 一个孩子长大成人的角色。但这可能不在您的规范中。