Как проверить что все цифры в числе больше нуля?
Есть вопрос по задаче. Условие:
Дано число, например, вот такое:
num = 12345
Проверьте, что все цифры этого числа больше нуля.
Попробовал написать код
n = int(input("Введите число: "))
flag = True
while n and flag:
flag = n > 0
n //= 10
print(flag)
Если ввести 12345
, то выдаёт True
.
А если ввести 120345
то выдаёт также True
, хотя должен выдавать False
.
Подскажите где ошибка.
Ответы (6 шт):
Каждую итерацию Вы только отсекаете от числа последнюю цифру. Но проверку для 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)
print(all(map(int, input ("введите число"))))
если гарантируется, что в input
точно число, то можно просто:
min(input()) != "0"
В качестве забавной альтернативы предложу такое:
print('0' not in input("введите число"))
Можно сделать легкую команду:
def check(text:str='0123456789',symb:str='0'):
return symb not in text
print(check('12305678', '0'))
На вопрос уже дано довольно большое количество изящных ответов. Но в любом случае, вот простое решение в 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')