Страшная правда о цикле For в Python заключается в то, что цикла For в Python нет, под ним скрывается подлый самозванец. А именно цикл ForEach («для каждого»).

Классический цикл For во всех языках использует переменную-счётчик. Она принимает какое-то значение, часто 0, и потом обычно к ней прибавляется или отнимается на каждом шаге 1. Иногда другое число, иногда с переменной другие действия, но суть такая. И вводится эта переменная в первой строчке For, в ней же указывается, что с ней должно происходить и до каких пор продолжаться. В Си-подобных языках будет примерно так:

Страшная правда о цикле For в Python (это самозванец!)

где print — как в Python, вывод текста в консоль. В каждом языке этот вывод свой. Тут выведутся числа от 0 до 7. Код можно расшифровать так: для i от 0 и пока оно меньше 8 прибавлять к i 1 и выводить его.

ForEach тоже использует переменную, но он всегда перебирает некую последовательность. В си-подобных языках будет примерно так

Страшная правда о цикле For в Python (это самозванец!)

slovo — переменная, которая содержит строку, а bukva — переменная, в которую ForEach загоняет по очереди каждую строку. То есть можно расшифровать «для каждой буквы в слове вывести букву»

В Python циклу For, который на самом деле ForEach, можно дать строку — он переберёт все буквы. Можно дать файл — он переберёт его построчно. А можно дать последовательность чисел от 0 до 7 и он переберёт и её. В переменную, которую использует ForEach, записываются не индексы, не номера. Она, как бы обозначает собой каждый элемент этой последовательности. Строку файла, букву.

Настоящему For можно дать только первое число, по какому правилу генерировать каждое следующее и когда это всё закончится. Вот и получается, что в Python под маской For скрывается ForEach:

Страшная правда о цикле For в Python (это самозванец!)

А вот как нужно было бы писать код для вывода того же слова по буквам, если бы For в Python был настоящим For:

Страшная правда о цикле For в Python (это самозванец!)

То есть и обычным For можно перебирать массивы/списки, строки и т.д. Но это работает несколько по-другому.

И напоследок вернёмся к первому примеру, где выводятся числа от 0 до 7. Как это делается в Python с помощью его самозванного For?

Страшная правда о цикле For в Python (это самозванец!)

Смотрите, тут тоже вроде бы переменная-счётчик i. Можно и называть её счётчиком, но тут происходит другое. Функция range() вернёт последовательность чисел 0, 1, 2, 3, 4, 5, 6, 7. То есть это примерно то же самое, что:

Страшная правда о цикле For в Python (это самозванец!)

Тут, опять же, мы не прибавляем к числу из переменной что-то и записываем обратно. Тут For получает готовую последовательность 0, 1, 2... и в переменную по очереди записываются все её части.

И сразу для профессиональных программистов, которые не поймут, на какую я аудиторию пишу, и начнут спрашивать, зачем это писать, ведь всем понятно — моей аудитории непонятно :-). На начинающих ориентируюсь. Причём на таких, которым куча бесплатных и подробных курсов непонятна. С которыми, если вы попробуете их сами обучить программированию, будет так

Страшная правда о цикле For в Python (это самозванец!)


Так что кто это не прочитал и всё равно написал, тот кукушечка.


Ссылочки на меня:

@vrom1990

https://www.youtube.com/c/ВячеславРоманьков

ССЫЛКА НА ТЕЛЕГРАМ-КАНАЛ ДЛЯ ПРИВЛЕЧЕНИЯ МИНУСОВ
https://t.me/vrom1990pb

Страшная правда о цикле For в Python (это самозванец!)