Найти - Пользователи
Полная версия: Ошибка с методом .pop()
Начало » Python для новичков » Ошибка с методом .pop()
1
PrinseSasuke
Код:
 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)
Задание:
Фокусники без изменений: начните с программы из упражнения 8-10 . Вызовите функцию make_great() и передайте ей копию списка имен фокусников . Поскольку исходный список остался неизменным, верните новый список и сохраните его в отдельном списке . Вызовите функцию show_magicians() с каждым списком, чтобы показать, что в одном списке остались исходные имена, а в другом к имени каждого фокусника добавилась приставка «Great»

Ошибка: в строке с simply_magicans = make_great(simply_magicans). Пишет, что .pop работает с пустым списком, хотя список является копией.
FishHook
Это потому что вы предполагаете, будто списки people и magicans одинаковой длины. Ясен пень, они же копии. Прикол в том, что в цикле for magican in people, вы удлинняте список people - people.append(magican), то есть он становится длиннее. И в какой-то момент magicans опустел, а перебор по people еще не закончился, ведь он же стал длиннее вдвое.
PrinseSasuke
FishHook
Это потому что вы предполагаете, будто списки people и magicans одинаковой длины. Ясен пень, они же копии. Прикол в том, что в цикле for magican in people, вы удлинняте список people - people.append(magican), то есть он становится длиннее. И в какой-то момент magicans опустел, а перебор по people еще не закончился, ведь он же стал длиннее вдвое.
Спасибо за помощь. Больше не буду работать с глобальными переменными в функциях.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB