Теория:

Есть задачи, в которых нужно обрабатывать данные на каждом шаге. Например, написать программу, которая выводила бы на экран таблицу умножения.
 
Результат программы может быть такой:
 
табл.jpg
Рис. \(1\). Таблица умножения
 
Для составления такой программы оптимально использовать вложенный цикл (цикл в цикле). Применим такой алгоритм для решения задачи о таблице умножения.
 
влож_пас.jpg
Рис. \(2\). Программа на Pascal
 
влож_пит.jpg
Рис. \(3\). Программа на Python
 
Вкладывать можно не только циклы for друг в друга, но и цикл for в while и наоборот.
Можно себе представить цикл в цикле как вращение одной шестерёнки внутри другой, причём внутренняя переменная изменяется быстрее.
  
Как это работает?
 
Переменная \(i\) принимает значение \(1\), а внутренняя переменная \(j\) принимает не одно значение, а несколько по очереди: от \(1\) до \(10\).
На следующем шаге \(i\) принимает значение \(2\), по тому же алгоритму \(j\) «пробегает» от \(1\) до \(10\) и т. д.
Источники:
Рис. 1. Таблица умножения. © ЯКласс.
Рис. 2. Программа на Pascal. © ЯКласс.
Рис. 3. Программа на Python. © ЯКласс.