Как работает цикл for в python?
Курс за 4900 взял,а там на 3 уроке сразу циклы. Почему i само меняется.
Ваш вопрос
Курс за 4900 взял,а там на 3 уроке сразу циклы. Почему i само меняется.
v4-pro
For в python устроен иначе, чем в паскале: там for i := 1 to 10 буквально считает от одного числа до другого, а в python for i in что-то перебирает элементы уже готовой последовательности, будь то список, строка, словарь или объект range. range(10) не хранит числа заранее, а генерирует их по одному от 0 до 9, то есть десять чисел, но верхняя граница в range не включается, и это самая частая причина расхождений с ожиданиями у тех, кто привык к паскалевскому включительному диапазону. Если нужен диапазон от 1 до 10 включительно, как в примере с паскалем, пишут range(1, 11), потому что второй аргумент range всегда исключается из результата. Переменная цикла, i в примере, на каждой итерации автоматически получает следующее значение из последовательности, вручную её увеличивать никогда не нужно, и попытка сделать это внутри тела цикла обычно не ломает сам for, потому что на следующем шаге i всё равно перезапишется значением из последовательности. Бесконечный цикл при использовании for в python на практике встречается редко именно потому, что перебор идёт по конечной последовательности и рано или поздно заканчивается сам; если цикл всё же зависает, скорее всего внутри тела на самом деле стоит while, либо идёт изменение той самой коллекции, по которой перебор происходит, например добавление элементов в список прямо во время прохода по нему, из-за чего перебор формально не заканчивается вовремя. Стоит также помнить про отступы: всё тело цикла обязано быть сдвинуто вправо на одинаковое количество пробелов относительно строки с for, python использует отступы вместо begin и end, и путаница с отступами часто выглядит так, будто цикл ведёт себя не так, хотя на деле код просто относится к другому блоку.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
4.20
4.20
Как работает цикл for в python?
for в python идёт по готовой последовательности - списку, строке или range, а не считает сам от и до, как в паскале, поэтому range(10) - это 0..9, а не 1..10, и увеличивать счётчик руками не надо, python делает это сам за тебя на каждом шаге.