Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 2, 2016 09:40:32

kochevnick48
Зарегистрирован: 2016-12-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться в примере.

Здравствуйте. Изучаю самостоятельно книгу Билла Любановича “простой 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. Интуитивно вроде бы понятно, да и код работает, но нет полного понимаю что и как работает. Большое спасибо

Офлайн

#2 Дек. 2, 2016 10:26:41

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

помогите разобраться в примере.

Код в блоке else выполняется только если цикл завершился сам. Если же из цикла вышли с помощью break, то этот код выполняться не будет.



Отредактировано FishHook (Дек. 2, 2016 10:27:36)

Офлайн

#3 Дек. 2, 2016 10:29:34

kochevnick48
Зарегистрирован: 2016-12-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться в примере.

Это понятно. Какую функцию выполняет переменная found_one и как это работает ?

Офлайн

#4 Дек. 2, 2016 10:30:04

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

помогите разобраться в примере.

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:30:52)

Офлайн

#5 Дек. 2, 2016 10:31:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

помогите разобраться в примере.

kochevnick48
Какую функцию выполняет переменная found_one
вы какую-то ерунду запостили



Отредактировано FishHook (Дек. 2, 2016 10:32:01)

Офлайн

#6 Дек. 2, 2016 10:40:35

kochevnick48
Зарегистрирован: 2016-12-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться в примере.

я понимаю как это работает. не понимаю назначение переменной found_one !

Офлайн

#7 Дек. 2, 2016 10:43:04

kochevnick48
Зарегистрирован: 2016-12-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться в примере.

получается , что found_one - переменная которая сигнализирует о том что в списке что-то найдено ?

Офлайн

#8 Дек. 2, 2016 10:47:19

kochevnick48
Зарегистрирован: 2016-12-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться в примере.

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?

Офлайн

#9 Дек. 2, 2016 10:51:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

помогите разобраться в примере.

Запостите код нормально

 [code python]
code here
[/code]

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



Офлайн

#10 Дек. 2, 2016 10:59:14

kochevnick48
Зарегистрирован: 2016-12-01
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите разобраться в примере.


 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?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version