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.
