|
0 / 0 / 0
Регистрация: 22.06.2019
Сообщений: 1
|
|
Изучение языка, цикл for. Не понимаю, как он работает22.06.2019, 03:48. Показов 4306. Ответов 9
Метки нет (Все метки)
0
|
|
| 22.06.2019, 03:48 | |
|
Ответы с готовыми решениями:
9
Не понимаю как работает цикл!
Нерабочий цикл. Я не понимаю почему он не работает. Я выделил нерабочий цикл пометками. Знает ли кто то причину? |
|
318 / 115 / 16
Регистрация: 07.10.2012
Сообщений: 542
|
||||||
| 22.06.2019, 09:46 | ||||||
0
|
||||||
| 22.06.2019, 11:02 | ||||||||||||||||
|
Platinus, Для того, что бы понимать все тонкости работы с циклом for , нужно изучить понятия "итерируемые объекты" и "итератор" . Но для начала работы с циклом for достаточно знать следующее,
Синтаксис:
Составная инструкция for in else для прохода (итерирования) по элементам последовательностей (таких как строки, списки, кортежи), либо других типов, поддерживающих итерирование. (мое прим. Инструкция for осуществляет проход по элементам итерируемого объекта (или итератора), на каждом проходе осуществляя операцию извлечения элемента из итерируемого объекта по индексу, который функция for автоматически подставляет начиная с 0 до N -1 (N количество элементов в итерируемом объекте). Когда доходит до последнего элемента, то на следующем проходе, не получая элемента, возвращается сообщение об ошибке и функция for выходит из цикла, переходя к следующей инструкции в программе, следующей за циклом for). Часть, идущая после in, будучи вычисленной единожды, должна предоставить объект, поддерживающий итерирование. Для данного объекта создаётся итератор. Далее переменной, предшествующей in, поочерёдно присваиваются значения [элементов], предоставляемые итератором и для каждого из них выполняется тело инструкции. Для лучшего понимания инструкции for дополню. Инструкция for при работе использует протокол итераций, зашитый внутри цикла for. По этому протоколу: 1. Если цикл for используется для итерируемого объекта X, то сначала из него создается итератор (с помощью встроенной функции iter(X) ). 2. Затем инструкция for при каждом проходе цикла использует метод итератора __next__, получая последовательно по одному объекту от итератора. 3. Если объект, к которому применяется цикл for, уже является итератором (например, объект файл), и потому уже имеет метод __next__, то шаг 1 протокола пропускается. Циклы for и другие итерационные механизмы в языке Python используют такой итерационный протокол, если он поддерживается, для обхода последовательностей или значений генераторов. Если протокол не поддерживается, инструкция for терпит неудачу и возвращается к операции индексирования последовательности. Внимание Если тело цикла несложное, то накладные расходы на поддержание цикла интерпретатором могут оказаться существенными. В подобных случаях рекомендуется использовать генератор, составление списка, либо функцию map(). Добавлено через 13 минут Platinus, Если простыми словами, на примере последовательности, то цикл for берет начиная с первого по одному элементу из последовательности. Присваивает этот элемент переменной цикла и выполняет тело цикла с этим значением переменной. Затем на следующем шаге, берет следующий элемент из последовательности и с этим значением переменной цикла вновь выполняет все действия в теле цикла. И так пока не переберет все элементы из последовательности. Добавлено через 12 минут Platinus, Пока Вы не знаете итераторы, просто примите за факт следующую особенность. Если у Вас в ходе выполнения цикла телом цикла будет изменяться итерируемый объект, который был поставлен в шапке цикла после in , то не смотря на изменение самого объекта, в шапке он меняться не будет, Так как там будет уже не сам объект, а его итератор, созданный первоначально.
1
|
||||||||||||||||
|
Просто Лис
|
|||||||
| 22.06.2019, 14:12 | |||||||
0
|
|||||||
|
1 / 1 / 0
Регистрация: 22.06.2019
Сообщений: 6
|
|
| 22.06.2019, 18:44 | |
|
ветка елс бессмыслена .. так же как и в исключениях .. я ваабще удивляюсь зачем в питоне добавили в эти элементы елсе .. смысла никакого
0
|
|
|
|
||
| 22.06.2019, 18:52 | ||
|
В цикле for - да, ветка else практически малоприменима, к тому ж неинтуитивна по назначению.
0
|
||
|
1 / 1 / 0
Регистрация: 22.06.2019
Сообщений: 6
|
||
| 23.06.2019, 12:10 | ||
0
|
||
|
|
||
| 23.06.2019, 12:33 | ||
|
0
|
||
| 23.06.2019, 14:43 | ||||||
|
Вот у Лутца простой пример использования в цикле for компонента else.
Когда в цикле мы ожидаем какого то события, и если оно произошло прерываем цикл с помощью break. Если же оно не произошло, то цикл отработает до конца. А как после цикла узнать найдено событие или нет? Я обычно использую флаг. А оказывается можно вместо флага использовать else. Ну это кому как больше нравится, кому флаг или какой либо еще способ, а кому else. Питон предоставляет вам возможность выбора. Так же и в исключениях. else не обязателен, не хотите не используйте. А кто то предпочитает использовать его. Питон демократичный язык, свобода выбора.
1
|
||||||
|
|
|
| 23.06.2019, 15:51 | |
|
for/else весьма полезной бывает.
0
|
|
| 23.06.2019, 15:51 | |
|
Помогаю со студенческими работами здесь
10
Не правильно работает цикл for while или я чего то не понимаю Не понимаю как составить цикл программы. изучение языка Изучение языка Изучение языка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|