Объясните как работает функция
def len_int (x):
len_ = 0
while x:
x //= 10
len_ += 1
return (len_)
Поясните как работает эта функция
Ответы (3 шт):
У тебя, наверное, путаница с делением. В Python'e есть два деления:
- Обычное -
7 / 2 = 3.5 - Целочисленное -
7 // 2 = 3.
При целочисленном делении дробная часть отбрасывается (не округляется)
Соответственно твоё выражение X //= 10 делит X на 10 и отбрасывает дробную часть
Данная функция len_int ищет длину целочисленной переменной x.
Рассмотрим на примере, допустим x = 567
При входе в функцию объявляем переменную len_ в которой будем хранить длину, и обнуляем её.
На следующем шаге запускаем цикл, который будет работать до тех пор, пока икс не будет равно нулю. В нашем примере х = 567
Мы делим икс на 10 x = x // 10 т.е. 567 // 10 = 56
Увеличиваем счётчик len_ = len_ + 1 т.е. мы посчитали цифру 7, её длина равна 1
Ещё за два шага аналогично 56 делим на 10, получаем 5 и длина 2. 5 делим на 10 получаем ноль, длина 3
В результате выполнения функции, если мы передадим значение 567, то мы получим результат 3. Это значит, что длина числа 567 равна трём символам, что нам было и нужно
Она возвращает длину переданного числа.
Например ты передаешь в аргумент функции 100
def len_int (x): # 100
len_ = 0
while x: # Пока x не равно нулю
x //= 10 # отбрасываем последний символ
len_ += 1 # аккумулируем при каждой итерации
return (len_)
Цикл while x: работает до тех пор, пока x не станет нулем.
На каждой итерации отбрасываем последний символ и увеличиваем счетчик len_.
- x == 100 // 10 = 10; len_ == 1
- x == 10 // 10 = 1; len_ == 2
- x == 1 // 10 = 0; len_ == 3
А 4й итерации уже не будет, так как x == 0 и цикл прервется,
следовательно функция вернет 3. return len_