将列表传递给要修改的函数

时间:2016-03-01 18:12:52

标签: python list function

我正在从书中教自己Python,我在这两部分练习中遇到了麻烦。我昨天发布的帖子认为我的第一部分是正确的,但是有人向我指出它不正确所以我重写它现在我认为我的第一部分是正确的,但我仍然遇到第二部分的问题。

练习的第一部分:

  

列出魔术师的名字。将列表传递给名为show_magicians()的函数,该函数在列表中打印每个魔术师的名称。

我练习第一部分的代码:

def show_magicians(names):
    for name in names:
        print(name)

magicians_names = ['Marv', 'Wowzo', 'Trickster', 'Didlo']

show_magicians(magicians_names)

输出:

Marv
Wowzo
Trickster
Didlo

练习的第二部分:

  

从练习8-9开始,阅读您的程序副本。编写一个名为make_great()的函数,通过将每个魔术师的名字添加为Great来修改魔术师列表。调用show_magicians()以查看列表实际已被修改。

我练习第二部分的代码:

def show_magicians(names):
    for name in names:
        print(name)

def make_great():


magicians_names = ['Marv', 'Wowzo', 'Trickster', 'Didlo']

show_magicians(magicians_names)

我的问题: 对于初学者,我需要知道我是否正确地完成了第一部分。我想我做了但我错了。至于第二部分我已经尝试了make_great函数的一些内容,但我真的不知道我需要做些什么才能让它修改列表。我认为它与while循环有关,但我真的不确定。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

你应该这样做:

def show_magicians(names):
    for name in names:
        print(name)

def make_great(magicians_names):
    return [ name + ' The Great' for name in magicians_names ]

magicians_names = ['Marv', 'Wowzo', 'Trickster', 'Didlo']

magicians_names = make_great(magicians_names)
show_magicians(magicians_names)

另一个选择是修改列表:

def show_magicians(names):
    for name in names:
        print(name)

def make_great(magicians_names):
    for i in range(len(magicians_names)):
        magicians_names[i] += ' The Great'

magicians_names = ['Marv', 'Wowzo', 'Trickster', 'Didlo']

make_great(magicians_names)
show_magicians(magicians_names)

答案 1 :(得分:0)

如果您确实想要修改列表,而不是创建新列表:

def make_great(magicians_names):
    for j in range(len(magicians_names)):
        magicians_names[j] = 'The Great ' + magicians_names[j]
    return magicians_names