Форум сайта python.su
0
Код:
magicans = [ "Fred", "Mike", "Freddy"]
def show_magicans(people): for magican in people: print(magican.title() + " showed a trick") def make_great(people): for magican in people: magican = "Great " + magicans.pop(0) people.append(magican) return people simply_magicans = magicans.copy() simply_magicans = make_great(simply_magicans) show_magicans(magicans) show_magicans(simply_magicans)
Отредактировано FishHook (Апрель 4, 2019 18:52:05)
Офлайн
568
Это потому что вы предполагаете, будто списки people и magicans одинаковой длины. Ясен пень, они же копии. Прикол в том, что в цикле for magican in people, вы удлинняте список people - people.append(magican), то есть он становится длиннее. И в какой-то момент magicans опустел, а перебор по people еще не закончился, ведь он же стал длиннее вдвое.
Офлайн
0
FishHookСпасибо за помощь. Больше не буду работать с глобальными переменными в функциях.
Это потому что вы предполагаете, будто списки people и magicans одинаковой длины. Ясен пень, они же копии. Прикол в том, что в цикле for magican in people, вы удлинняте список people - people.append(magican), то есть он становится длиннее. И в какой-то момент magicans опустел, а перебор по people еще не закончился, ведь он же стал длиннее вдвое.
Офлайн