ДАЮ 35!!!!!!!!!!!БАЛЛОВ!!!!!!!!!!!!ПОЖАЛУЙСТА!!!!!!!!!!!!ПОМОГИТЕ!!!!!
Андрей написал функцию и передал в качестве параметра год рождения своей сестры — 2017.
Python
def f(n):
s = 0
while (n != 0):
s = s + n % 2
n = n // 2
return(s)
Какое значение вернет функция ?
Какое значение вернёт функция с тем же параметром, если в теле функции заменить число 2 на 10?
Answers & Comments
Ответ:
1) функция вернет значение 7
2) если в теле функции заменить число 2 на 10, то функция вернет значение 10
Объяснение:
1)
в функции цикл с предусловием выполняется пока переданный параметр (2017) не равен 0 (n != 0), функция суммирует остатки полученные при целочисленном деление этого числа на 2 (s = s + n % 2), а затем выполняет и само целочисленное деление этого числа на 2 (n = n // 2)
2017/2 = 1008 + остаток 1
1008/2 = 504 + остаток 0
504/2 = 252 + остаток 0
252/2 = 126 + остаток 0
126/2 = 63 + остаток 0
63/2 = 31 + остаток 1
31/2 = 15 + остаток 1
15/2 = 7 + остаток 1
7/2 = 3 + остаток 1
3/2 = 1 + остаток 1
1/2 = 0 + остаток 1
s = 0 (начальное значение) + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 = 7
2)
если в теле функции заменить число 2 на 10, то функция будет вычислять сумму цифр числа, переданного ей как параметр
def f(n):
s = 0
while (n != 0):
s = s + n % 10
n = n // 10
return(s)
2017/10 = 201 + остаток 7
201/10 = 20 + остаток 1
20/10 = 2 + остаток 0
2/10 = 0 + остаток 2
s = 0 (начальное значение) + 7 + 1 + 0 + 2 = 10