Форум сайта python.su
Этот код бессмысленен чуть более чем полностью.
Офлайн
Данный код из книги, автора я уже указал. Если Вы считаете себя умнее автора то объясните его бессмысленность.
Офлайн
kochevnick48А я то при чем? Выкинь её на помойку.
Данный код из книги, автора я уже указал.
kochevnick481. Потому что цикл, который заведомо выполняется один и только один раз не имеет смысла.
объясните его бессмысленность
Офлайн
kochevnick481. На данном форуме необходимо код обертывать в теги, как Вам справедливо уже указал модератор.
получается , что found_one - переменная которая сигнализирует о том что в списке что-то найдено ?
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, хоть ей и было присвоено True в цикле. Но в цикле for вообще никакие действия не выполнялись, в том числе и found_one = True. А не выполнялись они потому, что ни одного сыра (cheese) в пустом списке cheeses не было найдено.
Отредактировано old_monty (Дек. 2, 2016 11:27:42)
Офлайн
Вот это более понятно. Спасибо. Про “обертывание кода” я извиняюсь. Т.е. если бы в списке был “сыр” found_one изменился бы на true и сработал бы break . Верно ?
Офлайн
kochevnick48В этом Вы легко можете убедиться сами. Попробуйте внести один, два или больше сыров в список cheeses:
Вот это более понятно. Спасибо. Про “обертывание кода” я извиняюсь. Т.е. если бы в списке был “сыр” found_one изменился бы на true и сработал бы break . Верно ?
cheeses = ['parmesan', 'holland_special', 'smoked']
cheeses = [] for cheese in cheeses: print('This shop has some lovely', cheese) break else: print('This is not much of a cheese shop, is it?')
Офлайн
С конструкцией где есть else всё сразу было понятно.
Да конструкция проще и удобнее.
Ещё один вопрос - а почему глобальная переменная found_one изначально объявляется False ?
Офлайн
kochevnick48Потому что изначально (до прохождения по элементам списка при помощи for) мы не можем гарантировать, что уже найден хотя бы один сыр. Да, у автора в примере список сыров пустой, это видно из кода. Но кто сказал, что мы всегда будем читать из списка? Более реально читать из файла, а его содержимое заранее неизвестно. Если все же будем читать из списка, то опять же, он может оказаться пустым (например, если элементы списка вводятся пользователям с консоли, а программа перед добавлением в список проверяет введенные значения, и отбрасывает недопустимые - например цифры, знаки @#$% и т.д.)
Ещё один вопрос - а почему глобальная переменная found_one изначально объявляется False ?
Отредактировано old_monty (Дек. 2, 2016 12:12:24)
Офлайн
Большое Спасибо. Вы помогли мне разобраться.
Офлайн
MickeyMouseЭто как в том приколе с башорга про студента, который читая учебник увидел код на С++, который не смог осмыслить ни он сам ни его компилятор. Студент долго мучился с этим кодом, играл с ключами компилятора, переменными окружения, библиотеками и когда он накурив банку бычков и разбив клавиатуру почти понял, как оно работает, он перевернул страницу и прочитал: “Этот код, конечно же не работает потому что…”.
MickeyMouse
Офлайн