我写了一个程序,但是运行结果不符合预期

修改你为完成练习8-10而编写的程序,在调用函数make_great() 时,向它传递魔术师列表的副本。由于不想修改原始列表,请返回修改后的列表,并将其存储到另一个列表中。分别使用这两个列表来调用show_magicians() ,确认一个列表包含的是原来的魔术师名字,而另一个列表包含的是添加了字样“the Great”的魔术师名字。
问题相关代码,请勿粘贴截图

def show_magicians(magicians):
for magician in magicians:
msg = "Hello, " + magician.title() + "!"
print(msg)

def make_great(changed_list,magicians):

while changed_list:
    changed_magician = 'the great '.title() + changed_list.pop().title()
    magicians.append(changed_magician)
   
return magicians

magicians=[]
names = ['a', 'b','c']

make_great(names,magicians)
show_magicians(names)

运行结果及报错内容 没有结果
我的解答思路和尝试过的方法 我目前没有想法,不知道哪里出了问题
我想要达到的结果结果就包含在题目当中

函数结果没有赋值

def show_magicians(magicians):
    for magician in magicians:
        msg = "Hello, " + magician.title() + "!"
        print(msg)

def make_great(changed_list, magicians):
    while len(changed_list)!=0:
        changed_magician = 'the great '.title() + changed_list.pop().title()
        magicians.append(changed_magician)
    return magicians
magicians = []
names = ['a', 'b', 'c']
magicians = make_great(names, magicians)
show_magicians(magicians)

show_magicians的时候names里边没有值了!你在make_great已经循环移除了names的全部值,参考:https://www.runoob.com/python/att-list-pop.html

img