Ответ – операции из урока 1.6, которые до сих пор выглядели второстепенными, а здесь становятся главными:
n % 10– остаток от деления на 10, то есть последняя цифра;n // 10– целая часть от деления на 10, то есть число без последней цифры.
Посмотрим, что они дают, если применять их к числу 4726 снова и снова:
n |
n % 10 |
n // 10 |
|---|---|---|
| 4726 | 6 | 472 |
| 472 | 2 | 47 |
| 47 | 7 | 4 |
| 4 | 4 | 0 |
Ради двух наблюдений эта таблица и нужна:
- каждая строка – одно и то же действие с новым значением, то есть одна итерация;
- в последней строке
n // 10даёт 0 – это и есть естественный сигнал «цифры кончились», готовое условие остановки.
Число 10 здесь не случайное: мы пользуемся десятичной записью, а десять – её основание. Если взять % 2 и // 2, тот же приём начнёт выдавать двоичные разряды – именно так устроено деление уголком из урока 2.5.