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 must see if the given number is greater than 0:
>>> -2 > 0
False
>>> 3 > 0
True
Turning the number into a tuple with its parts can be done more easily by turning the number into a string, dividing it and then turning 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 generating expression:
>>> tupla_digitos = tuple(int(digito) for digito in str(34501))
>>> tupla_digitos
(3, 4, 5, 0, 1)
Putting it all together and matching input
user’s:
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)))
Upshot:
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)
It is very well prepared! Thank you very much!
– Joao Peixoto Fernandes