Форум сайта python.su
Здравствуйте. Изучаю самостоятельно книгу Билла Любановича “простой Python”. В 4-й главе, разбирается цикл for. Приведен пример, но не могу разобраться до конца что к чему.
Как и в цикле while, в цикле for использование блока else может показаться нелогичным. Можно рассматривать цикл for как поиск чего-то, в таком случае else будет вызываться, если вы ничего не нашли. Чтобы получить тот же эффект без блока else, используйте переменную, которая будет показывать, нашелся ли искомый элемент в цикле for, как здесь:
>>> cheeses =
>>> found_one = False
>>> for cheese in cheeses:
… found_one = True
… print('This shop has some lovely', cheese)
… break
…
>>> if not found_one:
… print('This is not much of a cheese shop, is it?')
…
This is not much of a cheese shop, is it?
Помогите разобраться, какой смысл несет переменная found_one и почему она сначала объявляется False. Интуитивно вроде бы понятно, да и код работает, но нет полного понимаю что и как работает. Большое спасибо
Офлайн
Код в блоке else выполняется только если цикл завершился сам. Если же из цикла вышли с помощью break, то этот код выполняться не будет.
Отредактировано FishHook (Дек. 2, 2016 10:27:36)
Офлайн
Это понятно. Какую функцию выполняет переменная found_one и как это работает ?
Офлайн
kochevnick48
Можно рассматривать цикл for как поиск чего-то, в таком случае else будет вызываться, если вы ничего не нашли.
result = None l = [1 , 2, 3, 4] for i in l: if i > 5: result = i break else: print "NOTHING!"
Отредактировано FishHook (Дек. 2, 2016 10:30:52)
Офлайн
kochevnick48вы какую-то ерунду запостили
Какую функцию выполняет переменная found_one
Отредактировано FishHook (Дек. 2, 2016 10:32:01)
Офлайн
я понимаю как это работает. не понимаю назначение переменной found_one !
Офлайн
получается , что found_one - переменная которая сигнализирует о том что в списке что-то найдено ?
Офлайн
cheeses = # создайтся пустой список
>>> found_one = False # переменная объявляется False (вот это мне непонятно зачем )
>>> for cheese in cheeses: # задаются параметры цикла for
… found_one = True # почему эта переменная объявляется True ?
… print('This shop has some lovely', cheese)
… break
…
>>> if not found_one:
… print('This is not much of a cheese shop, is it?')
…
This is not much of a cheese shop, is it?
Офлайн
Запостите код нормально
[code python] code here [/code]
Офлайн
cheeses =[] # создайтся пустой список found_one = False # переменная объявляется False (вот это мне непонятно зачем ) for cheese in cheeses: # задаются параметры цикла for found_one = True # почему эта переменная объявляется True ? print('This shop has some lovely', cheese) break if not found_one: print('This is not much of a cheese shop, is it?') This is not much of a cheese shop, is it?
Офлайн