0

我有一个这样的问题

为函数 findActor 编写合约、文档字符串和实现,该函数接受电影标题和角色名称并返回在给定电影中扮演给定角色的演员/女演员。如果找不到给定的电影或给定的角色,它会打印一条错误消息并返回一个空字符串

我已经完成了以下有助于执行此操作的功能。而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"
4

2 回答 2

1

您需要在使用它之前填充您的myIMDB字典。findActor

另外,我建议myIMDB直接从移动的标题映射到角色。换句话说,不要myIMDb[len(myIMDb)] = {title: dict2}在 your中做,而是addMoive应该做myIMDb[title] = dict2.

这样,当您需要查找标题和字符时,您可以简单地执行以下操作:

def findActor(title, name):
    if title in myIMDb:
        if name in myIMDb[title]:
            return myIMDb[title][name]
    return "Error: No movie found"
于 2013-10-24T03:24:55.120 回答
1

学习任何语言的第一件事就是将您的任务简化为子任务。在这里,为什么不首先为一部电影创建一个角色和演员字典。如果你不能这样做,那么你将无法完成整个项目。

在你努力之后,也许其他一切都会到位。

警告:在现实世界中,有时可能会有多个演员扮演一个角色——例如——一个孩子长大成人的角色。但这可能不在您的规范中。

于 2013-10-24T03:30:10.597 回答