Dopisanie do każdej wartości w liście tekstu

0

Witam, zaczynam naukę python'a.
Zacząłem od kursu na udemy: "Kurs programowania - Python od podstaw", mam mieszane uczucia po tym kursie.
Teraz kupiłem książkę: "Python. Instrukcje dla programistów" i tu czuję, że dużo więcej się nauczę. Jednakże stanąłem
na zadaniu domowym 8.10 i niby program działa tak jak powinien, ale...
Póki tego nie zrobię nie ruszę dalej, więc proszę o pomoc w funkcji """Dopisanie do każdej wartości w liście: doskonały"""
Trochę głupio pytać się o takie "proste" rzeczy.. Z góry przepraszam za zajmowanie cennego czasu :)

# 8.10
def show_magicians(magicians):
    """Wyświetla imiona najlepszych magików"""
    for magician in magicians:
        print(magician.title())


def make_great(magicians):
    """Dopisanie do każdej wartości w liście: doskonały"""
    for magician in magicians:
        magician = magicians.pop(0)
        magicians.append('Doskonały ' + magician)


magicians = ['lena', 'elwira', 'darek']
make_great(magicians)
show_magicians(magicians)

Z pętlą while wychodzi mi jeszcze więcej linijek, heh muszę przyznać, że czasem jest to irytujące, ale wręcz kręci mnie to :)

def make_great(magicians):
    """Dopisanie do każdej wartości w liście: doskonały"""
    list_lenght = 0
    while magicians:
        list_lenght += 1
        magician = magicians.pop(0)
        magicians.append('Doskonały ' + magician)
        if list_lenght == len(magicians):
            break
1

Ja bym to zrobił bez funkcji, o tak

def show_magicians(magicians):
    """Wyświetla imiona najlepszych magików"""
    for magician in magicians:
        print(magician.title())
magicians = ['lena', 'elwira', 'darek']
#make_great(magicians)
magicians = ["doskonały " + magician for magician in magicians]
show_magicians(magicians)

Generalnie problem z twoim tokiem myślenia polega na tym że funkcja nic nie zwraca, wiec magicians nie ulega modyfikacji. Z funkcją powinno to wyglądać raczej tak:

def show_magicians(magicians):
    """Wyświetla imiona najlepszych magików"""
    for magician in magicians:
        print(magician.title())

def make_great(magicians):
    """Dopisanie do każdej wartości w liście: doskonały"""
    magicians = ["doskonały " + magician for magician in magicians]
    return magicians  #poprawki są tu

magicians = ['lena', 'elwira', 'darek']
magicians = make_great(magicians)  # i tu 
show_magicians(magicians)
1

Dziękuję.
Właśnie utwierdziłeś mnie w przekonaniu, że warto śledzić forum, czytać pytania i odpowiedzi.
Tu naprawdę dużo można się nauczyć, mam nadzieję że nie będę zadawał dużo zbędnych pytań.
Jeszcze raz dziękuję i miłego weekendu :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1