2017/07/22

Python com Elegância

Surgiu uma necessidade interessante que descrevo brevemente.
O desafio era verificar um numero inteiro em entradas de dados inserido por usuário.

Na linguagem python dependendo da tua estratégia, é importante validar uma entrada feita pelo usuário, evitando problemas de dados inconsistentes e erros na execução do algoritmo.

Veja uma exemplo do que estou falando.
# ----------------------- início do código ------------------
print('\n')
print('#Input() trata os dados lidos sempre como String')
idade = int(input("Quantos anos você tem? "))
if idade < 18:
print("Você é menor de idade")
else:
print("Você é maior de idade")
# ----------------------- fim do código ------------------

Qual é o problema com este código? 
Basicamente dois com a entrada dos dados pelo usuário:
01 - Não aceita caractere
02 - Não aceita ponto flutuante
Se o usuário inserir um destes, ocorre um erro no processamento do algoritmo.

Qual a solução?
Depois de uma busca pela internet, muitas das soluções era a de capturar o erro da entrada com a função def e então tratar do problema. Este não é o método mais elegante. 

Eis o método mais elegante, mesmo não sendo tão óbvio para muitos programados mais experientes.

# ----------------------- início do código ------------------
print('\n')
print('#Input() trata os dados lidos sempre como String')
idade = input("Quantos anos você tem? ")

if idade.isdigit():
if int(idade) < 18:
print("Você é menor de idade")
else:
print("Você é maior de idade")
else:
print("entrada de número não inteiro")
# ----------------------- fim do código ------------------

Parece simples, e é mesmo. Bem menos complexo que a maioria das propostas on-line.

Conclusão

Vale a pena a busca de outras soluções, pois sempre existe um forma mais elegante de resolver o mesmo problema.




Nenhum comentário: