Feb-03-2019, 07:26 PM
Hi, I'm new to programming with python and I completed one of the exercises of the book I use to learn but I don't understand why this code doesn't make an infinite loop of printing the list. The problem is: Write a function called make_great() that modifies the list of magicians by adding the phrase the Great to each magician’s name. Matthes, Eric. Python Crash Course: A Hands-On, Project-Based Introduction to Programming (p. 150). No Starch Press. Kindle Edition.
magicians = ['xerath', 'ryze', 'sylas', 'vladimir'] def make_great(list_of_magicians): for magician in list_of_magicians: person = list_of_magicians.pop() add_text = 'the great ' + person list_of_magicians.insert(0, add_text) print(list_of_magicians) make_great(magicians)This is the output:
Output:['the great vladimir', 'xerath', 'ryze', 'sylas']
['the great sylas', 'the great vladimir', 'xerath', 'ryze']
['the great ryze', 'the great sylas', 'the great vladimir', 'xerath']
['the great xerath', 'the great ryze', 'the great sylas', 'the great vladimir']
I have tried another solution to this problem by doing this:magicians = ['xerath', 'ryze', 'sylas', 'vladimir'] def make_great(list_of_magicians): for magician in list_of_magicians: add_text = 'the great ' + magician list_of_magicians.insert(0, add_text) print(list_of_magicians) make_great(magicians)And this is the output:
Output:['the great xerath', 'xerath', 'ryze', 'sylas', 'vladimir']
['the great xerath', 'the great xerath', 'xerath', 'ryze', 'sylas', 'vladimir']
['the great xerath', 'the great xerath', 'the great xerath', 'xerath', 'ryze', 'sylas', 'vladimir']
['the great xerath', 'the great xerath', 'the great xerath', 'the great xerath', 'xerath', 'ryze', 'sylas', 'vladimir']
['the great xerath', 'the great xerath', 'the great xerath', 'the great xerath', 'the great xerath', 'xerath', 'ryze', 'sylas', 'vladimir']
-This continues by adding one more element to the list each time.-
Can someone explain to me why this two solutions make different outputs? Thanks ! :D.