Давайте разберем функцию, написанную Андреем, и поймем, что она делает, а затем как изменится ее поведение, если мы заменим число 2 на 10.
Вот исходный код функции:
def f(n):
s = 0
while(n != 0):
s = s + n % 2
n = n // 2
return(s)
Объяснение работы функции
Входные данные:
- Функция принимает одно число
n, которое должно быть целым (например, год рождения).
- Функция принимает одно число
Переменные:
sинициализируется нулем. В этой переменной мы будем хранить количество единиц в двоичном представлении числаn.
Цикл:
- Цикл
while(n != 0)выполняется, покаnне равно нулю. - В каждой итерации:
n % 2вычисляет остаток от деленияnна 2. Это будет 0 (еслиnчетное) или 1 (если нечетное).- Значение
n % 2добавляется кs, так что по мере выполнения циклаsбудет подсчитывать количество единиц (битов 1) в двоичном представлении числаn. - Затем
nделится на 2 с использованием целочисленного деления, т.е.n = n // 2, что позволяет перейти к следующему биту.
- Цикл
Возврат значения:
- Функция возвращает значение переменной
s, которая в конце цикла будет содержать количество единиц в двоичном представлении числаn.
- Функция возвращает значение переменной
Замена числа 2 на 10
Теперь давайте изменим функцию, заменив 2 на 10:
def f(n):
s = 0
while(n != 0):
s = s + n % 10
n = n // 10
return(s)
Как работает измененная функция
- Входные данные и переменные: остаются прежними.
- Цикл:
- Теперь
n % 10будет возвращать последний разряд числаnв десятичной системе (остаток от деления на 10). - Каждая итерация будет добавлять этот разряд к
s. n = n // 10удаляет последний разряд числа, позволяя на следующей итерации обработать следующий.
- Теперь
- Возврат значения:
- Функция будет возвращать сумму всех разрядов числа
n.
- Функция будет возвращать сумму всех разрядов числа
Пример работы
Проверим на примере:
Допустим, мы передали функции год рождения сестры Андрея — 2019.
С исходной функцией (
n % 2):- 2019 в двоичном: 11111011111 (8 единиц)
- Функция вернет 8.
С измененной функцией (
n % 10):- Сумма разрядов числа 2019: 2 + 0 + 1 + 9 = 12.
- Измененная функция вернет 12.
Ответ
Таким образом, функция вернёт значение 12, если в теле функции заменить число 2 на 10.