Как проверить что все цифры в числе больше нуля?

Есть вопрос по задаче. Условие:

Дано число, например, вот такое:

num = 12345

Проверьте, что все цифры этого числа больше нуля.

Попробовал написать код

n = int(input("Введите число: "))
flag = True
while n and flag:
     flag = n > 0
     n //= 10
print(flag)

Если ввести 12345, то выдаёт True.

А если ввести 120345 то выдаёт также True, хотя должен выдавать False.

Подскажите где ошибка.


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

Автор решения: mrgervant

Каждую итерацию Вы только отсекаете от числа последнюю цифру. Но проверку для flag делаете по полностью оставшемуся числу, а не последнему отрезанному.

То есть у Вас проходят такие сравнения по flag = n > 0:

120345 > 0
12034 > 0
1203 > 0
120 > 0
12 > 0
1 > 0

Нужно каждую итерацию сравнивать с помощью n % 10 - остаток от деления на 10 даёт последнюю цифру. Тогда будет сравнивать так:

5 > 0
4 > 0
3 > 0
0 > 0 >>> False

Правильный вариант:

n = int(input("Введите число: "))
flag = True
while n and flag:
     flag = n % 10 > 0
     n //= 10
print(flag)
→ Ссылка
Автор решения: Danis

если гарантируется, что в input точно число, то можно просто:

min(input()) != "0"
→ Ссылка
Автор решения: CrazyElf

В качестве забавной альтернативы предложу такое:

print('0' not in input("введите число"))
→ Ссылка
Автор решения: AVirus

Можно сделать легкую команду:

def check(text:str='0123456789',symb:str='0'):
    return symb not in text

print(check('12305678', '0'))
→ Ссылка
Автор решения: Dezmonder

На вопрос уже дано довольно большое количество изящных ответов. Но в любом случае, вот простое решение в 33 строчки:

n = input()

n_int = int(n)

n_str = str(n_int)
flag = not False
for i in n_str:
    i_int = int(i)
    if i_int == 1:
        pass
    elif i_int == int(8.000):
        pass
    elif i_int == 6:
        pass
    elif i_int is 4:
        pass
    elif i_int == 2:
        pass
    elif i_int == 3:
        pass
    elif i_int == int('5'):
        pass
    elif i_int is 5+4:
        pass
    elif i_int == 7:
        pass
    elif i_int == 0:
        flag = True

if flag == True:
    print('Число без 0')
elif flag is not True:
    print('Число с 0')
→ Ссылка