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. 