kochevnick48
Дек. 2, 2016 09:40:32
Здравствуйте. Изучаю самостоятельно книгу Билла Любановича “простой 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. Интуитивно вроде бы понятно, да и код работает, но нет полного понимаю что и как работает. Большое спасибо
FishHook
Дек. 2, 2016 10:26:41
Код в блоке else выполняется только если цикл завершился сам. Если же из цикла вышли с помощью break, то этот код выполняться не будет.
kochevnick48
Дек. 2, 2016 10:29:34
Это понятно. Какую функцию выполняет переменная found_one и как это работает ?
FishHook
Дек. 2, 2016 10:30:04
kochevnick48
Можно рассматривать цикл for как поиск чего-то, в таком случае else будет вызываться, если вы ничего не нашли.
Ну да. Если цикл выполнился до конца и не сработал break, то можно считать, что мы ничего не нашли.
result = None
l = [1 , 2, 3, 4]
for i in l:
if i > 5:
result = i
break
else:
print "NOTHING!"
этот код понятен?
FishHook
Дек. 2, 2016 10:31:42
kochevnick48
Какую функцию выполняет переменная found_one
вы какую-то ерунду запостили
kochevnick48
Дек. 2, 2016 10:40:35
я понимаю как это работает. не понимаю назначение переменной found_one !
kochevnick48
Дек. 2, 2016 10:43:04
получается , что found_one - переменная которая сигнализирует о том что в списке что-то найдено ?
kochevnick48
Дек. 2, 2016 10:47:19
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?
FishHook
Дек. 2, 2016 10:51:28
Запостите код нормально
[code python]
code here
[/code]
безо всяких стрелочек, троеточий и прочего мусора
kochevnick48
Дек. 2, 2016 10:59:14
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?