Найти - Пользователи
Полная версия: помогите разобраться в примере.
Начало » Центр помощи » помогите разобраться в примере.
1 2
kochevnick48
Здравствуйте. Изучаю самостоятельно книгу Билла Любановича “простой 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
Код в блоке else выполняется только если цикл завершился сам. Если же из цикла вышли с помощью break, то этот код выполняться не будет.
kochevnick48
Это понятно. Какую функцию выполняет переменная found_one и как это работает ?
FishHook
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
kochevnick48
Какую функцию выполняет переменная found_one
вы какую-то ерунду запостили
kochevnick48
я понимаю как это работает. не понимаю назначение переменной found_one !
kochevnick48
получается , что found_one - переменная которая сигнализирует о том что в списке что-то найдено ?
kochevnick48
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
Запостите код нормально

 [code python]
code here
[/code]

безо всяких стрелочек, троеточий и прочего мусора
kochevnick48

 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?
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