Как посчитать колличество нулей в конце числовой переменной?

    num = 234500
    zero_count = str(num)[::-1]
    count = 0
    for i in (range(0, len(zero_count))):
        while zero_count[i] != '1':
            count = count + 1
    print(count)

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

Автор решения: Сергей

Два варианта, чтобы уйти от бесконечного цикла. Коррекции пояснены в коде комментариями.

Вариант 1 (оптимальный из двух):

num = 100100
zero_count = str(num)[::-1]
count = 0
# Не нужен тут цикл for, а вместо i сам count и используем 
while zero_count[count] == '0':
    count = count + 1
print(count)

Вариант 2 (коррекция в изначальном цикле for):

num = 100100
zero_count = str(num)[::-1]
count = 0
for i in (range(0, len(zero_count))):
    # Здесь нужен не бесконечный while, а if, если уж for использован
    if zero_count[i] == '0':
        count = count + 1
    # А здесь прервать нужно, если условие не выполнено     
    else:
        break
print(count)
→ Ссылка
Автор решения: Stanislav Volodarskiy

Можно обойтись без строк. Проверяем сколько раз число делится на 10 без остатка:

def zero_count(n):
    c = 0
    while n > 0:
        n, d = divmod(n, 10)
        if d != 0:
            return c
        c += 1
    return 1


print(zero_count(0))
print(zero_count(1))
print(zero_count(10))
print(zero_count(100100))
$ python zero_count.py
1
0
1
2

Если доводить вариант со строками до ума:

def zero_count(n):
    for i, d in enumerate(reversed(str(n))):
        if d != '0':
            return i
    return 1

Регулярное выражение для подсчёта нулей в конце строки:

import re


def zero_count(n):
    return len(re.search('0*$', str(n))[0])

P.S. Все варианты хороши для не слишком длинных чисел. Но если у вас действительно большое число и в нём много нулей, то есть способы лучше...

→ Ссылка