【发布时间】:2017-03-19 02:42:40
【问题描述】:
这是我应该编写代码的问题:
为一个函数 showCast 编写合约、文档字符串和实现,该函数接受一个电影标题,并按照字符的字母顺序从给定的电影中打印出具有相应演员/女演员的字符。列必须对齐(演员/女演员姓名前 20 个字符(包括角色姓名)。)如果找不到电影,则会打印出错误消息。
它举例说明了这里应该发生的事情
>>> showCast("Harry Potter and the Sorcerer's Stone")
Character Actor/Actress
----------------------------------------
Albus Dumbledore Richard Harris
Harry Potter Daniel Radcliffe
Hermione Granger Emma Watson
Ron Weasley Rupert Grint
>>> showCast('Hairy Potter')
No such movie found
以下是我为同一个项目编写的其他函数,它们可能有助于回答问题。到目前为止,我必须做的总结是,我正在创建一个名为 myIMDb 的字典,其中包含电影标题的键和另一个字典的值。在 that 字典中,键是电影的角色,值是演员。我已经用它做了一些事情。 myIMDb 是记录的全局变量。
其他函数,他们做的是docString
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[title] = dict2
return myIMDb
我添加了三部电影,
addMovie("Shutter Island", ["Teddy Daniels", "Chuck Aule"],["Leonardo DiCaprio, ","Mark Ruffalo"])
addMovie("Zombieland", ["Columbus", "Wichita"],["Jesse Eisenberg, ","Emma Stone"])
addMovie("O Brother, Where Art Thou", ["Everett McGill", "Pete Hogwallop"],["George Clooney, ","John Turturro"])
def listMovies():
"""returns a list of titles of all the movies in the global variable myIMDb"""
return (list(myIMDb.keys()))
def findActor(title, name):
""" takes a movie title and a character's name and returns the
actor/actress that played the given character in the given movie. If the
given movie or the given character is notfound, it prints out an error
message"""
if title in myIMDb:
if name in myIMDb[title]:
return myIMDb[title][name]
else:
return "Error: Character not in Movie"
else:
return "Error: No movie found"
现在我遇到了麻烦
我应该编写 showCast 函数,但我遇到了很多麻烦。我已经修补了一段时间,但是当我调用 myIMDb.values() 时,一切都会返回。而且我似乎无法遍历它来对它们进行排序以创建表格。
这是我目前为止的想法,但它并没有达到我的预期。我只是希望你们中的一个可以引导我朝着正确的方向前进。 (注释掉的区域是我之前所做的,只是为了让你可以看到我的思路。[print(alist) 和 print(alist[0]) 只是为了确认它是列表中的一个大条目,而不是完全分开])
def showCast(title):
if title in myIMDb:
actList=[]
chList=[]
aList = list(myIMDb.values())
print (aList)
print (aList[0])
""""for i in range (len(aList)):
if i%2==0:
chList.append(aList[i])
else:
actList.append(aList[i])
print(chList)
print(actList)""""
else:
return "Movie not Found"
【问题讨论】:
-
您能发帖
myIMDb并详细说明输出吗? -
这是我向 myIMBd 添加两部电影,Shutter Island 和 Zombieland,然后我调用 myIMBd。 myIMDb 不是函数,只是字典 >>> addMovie("Shutter Island", ["Teddy Daniels", "Chuck Aule"],["Leonardo DiCaprio, ","Mark Ruffalo"]) {'Shutter Island' : {'Teddy Daniels': 'Leonardo DiCaprio, ', 'Chuck Aule': 'Mark Ruffalo'}} >>> addMovie("Zombieland", ["Columbus", "Wichita"],["Jesse Eisenberg, ", “艾玛斯通”]) {'Zombieland': {'Columbus': 'Jesse Eisenberg, ', 'Wichita': 'Emma Stone'}, 'Shutter Island': {'Teddy Daniels': 'Leonardo DiCaprio, ', ' Chuck Aule': 'Mark Ruffalo'}} >>>
-
>>> myIMDb {'Zombieland': {'Columbus': 'Jesse Eisenberg, ', 'Wichita': 'Emma Stone'}, 'Shutter Island': {'Teddy Daniels': '莱昂纳多·迪卡普里奥,','查克·奥勒':'马克·鲁法洛'}}
-
当您调用 aList = List(myIMDb.values()) 时,您是否只想获取当前电影键值?如果是这样,您可以使用 .get() 或只调用 aList = myIMDb[title] 这将给出字典中该键的值
标签: python list dictionary spacing