Объясните как работает функция

def len_int (x): 
    len_ = 0
    while x:
        x //= 10
        len_  += 1
    return (len_)

Поясните как работает эта функция


Ответы (3 шт):

Автор решения: Dark Space

У тебя, наверное, путаница с делением. В Python'e есть два деления:

  1. Обычное - 7 / 2 = 3.5
  2. Целочисленное - 7 // 2 = 3.

При целочисленном делении дробная часть отбрасывается (не округляется)
Соответственно твоё выражение X //= 10 делит X на 10 и отбрасывает дробную часть

→ Ссылка
Автор решения: alex

Данная функция 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 равна трём символам, что нам было и нужно

→ Ссылка
Автор решения: Shalbuz

Она возвращает длину переданного числа.
Например ты передаешь в аргумент функции 100

def len_int (x):  # 100
len_ = 0
while x:  # Пока x не равно нулю
    x //= 10  # отбрасываем последний символ
    len_  += 1  # аккумулируем при каждой итерации
return (len_)

Цикл while x: работает до тех пор, пока x не станет нулем. На каждой итерации отбрасываем последний символ и увеличиваем счетчик len_.

  1. x == 100 // 10 = 10; len_ == 1
  2. x == 10 // 10 = 1; len_ == 2
  3. x == 1 // 10 = 0; len_ == 3

А 4й итерации уже не будет, так как x == 0 и цикл прервется,
следовательно функция вернет 3. return len_

→ Ссылка