To check if it is integer, we can compare the result of the function type
with int
:
>>> type(10) == int
True
To check if it is positive, we should see if the given number is greater than 0:
>>> -2 > 0
False
>>> 3 > 0
True
Transforming the number into a tuple with its parts can be done more easily by transforming the number into a string, dividing it and then transforming it back into int:
lista_digitos = []
for digito in str(34501):
lista_digitos.append(int(digito))
tupla_digitos = tuple(lista_digitos)
Or, in a more concise way with a generative expression:
>>> tupla_digitos = tuple(int(digito) for digito in str(34501))
>>> tupla_digitos
(3, 4, 5, 0, 1)
Putting everything together and matching with input
of user:
while True:
n = input('Insira um numero inteiro positivo: ')
# Tentamos transformar n em inteiro (entrada original é string).
# Se não conseguirmos, recomeçamos o loop perguntando novamente.
try:
n = int(n)
except:
continue
# Aqui não precisamos mais comparar type com int
# porque temos certeza de que o programa só chegará
# nesse ponto se n for int.
# Se compararmos type(n) com o n original (logo depois
# do input), o resultado nunca será True, já que input
# retorna uma string.
if n > 0:
print(tuple(int(digito) for digito in str(n)))
Result:
Insira um numero inteiro positivo: 123
(1, 2, 3)
Insira um numero inteiro positivo: -123
Insira um numero inteiro positivo: Não número
Insira um numero inteiro positivo: 123485
(1, 2, 3, 4, 8, 5)