passantзаодно поподробнее ознакомлюсь с принципом ее работы
for i, name in enumerate(fokuses):
fokuses = “Great ”+name
passantзаодно поподробнее ознакомлюсь с принципом ее работы
for i, name in enumerate(fokuses):
fokuses = “Great ”+name
def show_magician(names, great): """List of magicians""" while names: current_name = names.pop() great.append(current_name) def make_great(great): """Great """ for greatness in great: print('Great ' + greatness) names = ['Hoodini', 'Harry Potter', "Newt Salamander"] great = [] show_magician(names, great) make_great(great)
def show_magician(names): '''выводит имя каждого фокусника в списке''' for name in names: print(name) def make_great(names): '''изменяет список фокусников''' for index,name in enumerate(names): names[index] = 'Great ' + name names = ['Hoodini', 'Harry Potter', "Newt Salamander"] show_magician(names) make_great(names) print(names)
def show_magicians(magicians):
for name in magicians:
print(name.title())
def make_great(magicians):
great_magicians = []
for name in magicians:
g_name = magicians.pop() + " the Great"
great_magicians.append(g_name)
for name in great_magicians:
magicians.append(name)
magicians11111 = ['chip', 'dayl', 'ponka']
show_magicians(magicians11111)
make_great(magicians11111)
show_magicians(magicians11111)
Сhip
Dayl
Ponka
Сhip
Ponka The Great
Dayl The Great
def show_magicians(magicians):
for name in magicians:
print(name.title())
def make_great(magicians):
great_magicians = []
while magicians:
g_name = magicians.pop() + " the Great"
great_magicians.append(g_name)
for name in great_magicians:
magicians.append(name)
magicians11111 = ['chip', 'dayl', 'ponka']
show_magicians(magicians11111)
make_great(magicians11111)
print("\n")
show_magicians(magicians11111)
Сhip
Dayl
Ponka
Ponka The Great
Dayl The Great
Сhip The Great
shelterКакая Понка? Гайка. Понка - это из утиных историй.magicians11111 = ['chip', 'dayl', 'ponka']
shelterПотому что цикл for идёт не по фиксированному списку. Нельзя в цикле for по списку менять этот же список. Это приводит к трудноуловимым ошибкам.
Не могу понять почему при использовании цикла for метод pop() при переборе
>>> lst = [1, 2, 3] >>> for i in lst: ... print(i) ... _ = lst.pop() ... 1 2 >>>
py.user.next))) точно
Какая Понка? Гайка. Понка - это из утиных историй.
py.user.nextСпасибо, теперь понятно частично, но понять бы как он именно идёт. Автор книги ни об этом не говорит, ни о том что вы прояснили, по крайней мере на том этапе до чего я дошел. Кажется, что хорошо бы автору объяснить досконально принцип работы циклов прежде чем давать такие упражнения. Но возможно это я что то упустил, буду разбираться дальше.
Потому что цикл for идёт не по фиксированному списку. Нельзя в цикле for по списку менять этот же список. Это приводит к трудноуловимым ошибкам.
shelterЦикл делает только два шага, а не три. Чтобы просматривать, как работает любой цикл, можно вставить отладочные принты, также можно использовать дебаггер для пошагового прохода (более профессиональный способ, которому следует обучиться).
Спасибо, теперь понятно частично, но понять бы как он именно идёт.
>>> def show_magicians(magicians): ... for name in magicians: ... print(name.title()) ... >>> def make_great(magicians): ... great_magicians = [] ... for name in magicians: ... print('name', name) ... print('before', magicians) ... g_name = magicians.pop() + " the Great" ... great_magicians.append(g_name) ... print('after', magicians) ... ... for name in great_magicians: ... magicians.append(name) ... >>> magicians11111 = ['chip', 'dayl', 'ponka'] >>> >>> show_magicians(magicians11111) Chip Dayl Ponka >>> >>> make_great(magicians11111) name chip before ['chip', 'dayl', 'ponka'] after ['chip', 'dayl'] name dayl before ['chip', 'dayl'] after ['chip'] >>> >>> show_magicians(magicians11111) Chip Ponka The Great Dayl The Great >>>
py.user.nextПонял. Большое спасибо!
Почему он делает только два шага, а не три, - потому что цикл при каждом витке переходит на следующий элемент, уходя с предыдущего элемента. Поэтому когда ты там что-то удаляешь, то складывается ситуация, что цикл ищет следующий элемент, чтобы на него перейти, а его там нет, потому что он удалён в теле цикла. Из-за этого он считает, что все элементы закончились.
shelter
И я застрял на этом упражнении. Я пытался решить так:
def show_magicians(names): for name in names: print('Hello ' + name.title() + '!') def make_gread(name_magicians): while name_magicians: gread_name = name_magicians.pop() name_1 = 'Great ' + gread_name.title() new_magicians.append(name_1) while new_magicians: name_gread = new_magicians.pop() magicians.append(name_gread) magicians = ['petya', 'vasya', 'oleg'] new_magicians = [] make_gread(magicians) show_magicians(magicians)
shelterА это решение следующего задания. Чутка меняешь, передаешь только копию списка и удаляешь часть функции make_gread.
И я застрял на этом упражнении. Я пытался решить так:
def show_magicians(names): for name in names: print('Hello ' + name.title() + '!') def make_gread(name_magicians): while name_magicians: gread_name = name_magicians.pop() name_1 = 'Great ' + gread_name.title() new_magicians.append(name_1) magicians = ['petya', 'vasya', 'oleg'] new_magicians = [] make_gread(magicians[:]) show_magicians(magicians) show_magicians(new_magicians)