Validação de Dados em Python - Exemplos e Código Comentado

Neste tutorial de nosso Curso de Python, vamos usar alguns exemplos de questões da Lista de Exercícios de laços WHILE e FOR para ver, na prática o que é uma validação de dados em Python, como funciona, como fazer e para que serve.

Vamos lá?

Antes, deixa eu te perguntar: quer só aprender Python por aprender ou pretende trabalhar e se tornar um programador profissional?

Se sim, leia:
Como ser um programador Python profissional e trabalhar com isso

Validação de Dados em Python

Como o nome diz, validar um dado é verificar, checar, garantir que aquelas informações são importantes, se servem de algo.

Se um código Python tá esperando um número e recebe a informação 'batata' do usuário, vai dar erro, vai sair coisa errada daí.



Já viu aqueles exemplos:
Digite sua data (dd/mm/aaaa), em algum formulário?

Pois é, é um tipo de validação, ele quer que o usuário digite o dia com 2 dígitos, o mês com 2 dígitos e o ano de nascimento com 4 dígitos.

Aí vai o usuário e digita '9/7/99' ... um bom código bem validado simplesmente não aceita essa informação. E é isso que vamos ver com alguns exemplos de código.

Vamos aprender a validar simplesmente barrando alguma asneira que o usuário vai fazer, ok?

Exercícios de Validação em Python

01. Faça um programa que peça uma nota, entre zero e dez. Mostre uma mensagem caso o valor seja inválido e continue pedindo até que o usuário informe um valor válido.

Temos que criar um script que fique sempre repetindo, pedindo a nota correta, caso ela seja errada. Quantas vezes ? Pra sempre?
Ou seja...pede...testa...não validou? Pede de novo...testa...não validou? Roda de novo.

Isso te lembra algo? Sim, laço WHILE, ele que teste algo e roda enquanto o teste for verdadeiro!

Nosso código fica:

nota = float(input("Insira uma nota 0 até 10: "))

while (nota < 0) or (nota > 10):
    nota = float(input("Não pode ser menor que 0 ou maior que 10 meu jovem!\n \
    Tente novamente:"))
print("Nota válida")



O looping WHILE é teimoso, só sai dela se a notar for de 0 até 10. Mais ou menos, ele não sai. Pode digitar até -0.1 ou 10.0001 (nunca duvide da capacidade de um usuário), ele não sai, pede a nota de novo!


02. Faça um programa que leia um nome de usuário e a sua senha e não aceite a senha igual ao nome do usuário, mostrando uma mensagem de erro e voltando a pedir as informações. 





A lógica é a mesma da questão anterior, porém, aqui, a gente vai comparar strings (vamos estudar elas mais a fundo em breve). Bacana que essa lógica é bem usada na vida real.

Vários sites, programas etc, não aceitam você ter mesmo login e senha
Veja que no decorrer de nosso Curso de Python, nossos programas vão se tornando cada vez mais realistas:

login = input("Login: ")
senha = input("Senha: ")

while login == senha:
    print("Sua senha deve ser diferente do login: ")
    senha = input("Senha: ")

print("Cadastro aprovado")


03.Faça um programa que leia e valide as seguintes informações:
  1. Nome: maior que 3 caracteres;
  2. Idade: entre 0 e 150;
  3. Salário: maior que zero;
  4. Sexo: 'f' ou 'm';
  5. Estado Civil: 's', 'c', 'v', 'd';
Use a função len(string) para saber o tamanho de um texto (número de caracteres).
Inicialmente, pedimos as 5 informações ao usuário (sempre informe como deve ser essa informação que ele deve fornecer, o seu formato, para ele informar corretamente).

Depois, vamos usando 5 loopings WHILE para nos certificar se ele forneceu os dados corretos. Vejam como ficou nosso script em Python:

nome = input("Qual seu nome [minimo 4 caracteres]: ")
idade = int(input("Sua idade: "))
salario = float(input("Salário: "))
sexo = input("Sexo ('f' para feminino ou 'm' para masculino): ")
civil = input("Estado civil (s, c, v ou d): ")

while len(nome) <= 3:
    nome = input("Seu nome deve ter mais que 3 caracteres: ")

while (idade < 0) or (idade > 150):
    idade = int(input("Voce deve ter entre 0 e 150 anos: "))

while (salario<0):
    salario = float(input("A coisa ta difícil, mas não tem salário negativo: "))

while (sexo!= 'f') and (sexo!='m'):
    sexo = input("Biologicamente, você deve ser 'f' ou 'm': ")

while (civil!='s')and(civil!='c')and(civil!='v')and(civil!='d'):
    print("Nao tem estado civil 'confuso'")
    civil = input("Deve ser s, c, v ou d: ")

04. e 05.
Supondo que a população de um país A seja da ordem de 80000 habitantes com uma taxa anual de crescimento de 3% e que a população de B seja 200000 habitantes com uma taxa de crescimento de 1.5%. Faça um programa que calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento. 

Altere o programa anterior permitindo ao usuário informar as populações e as taxas de crescimento iniciais. Valide a entrada e permita repetir a operação. 




Precisamos entender uma coisa:
O país A só vai superar o país B em termos de população se a taxa de crescimento de A for superior a de B.

Então, se assume que:
População de A é menor que B
Taxa de crescimento de A é maior que B

Então, nosso código fica assim:

popA=int(input("População do país A: "))
while popA<0:
    popA=int(input("População do país deve ser maior que 0: "))
taxaA=float(input("Taxa de crescimento da cidade A: "))

popB=int(input("População do país B: "))
while popB<0:
    popB=int(input("População do país deve ser maior que 0: "))
taxaB=float(input("Taxa de crescimento da cidade B: "))

ano=0
while popA < popB:
    ano += 1
    popA = int((1 + (taxaA/100) )* popA)
    popB = int((1 + (taxaB/100) )* popB)
    print("Ano %d:" % ano)
    print("Populaçao A: %d" % popA)
    print("População B: %d\n\n" % popB)

print("Ultrapassa no ano:",ano)


Crie agora um script que não importa o tamanho ou taxa de crescimento, diga o ano que uma supera a outra cidade ou que isso nunca vai acontecer.

Nenhum comentário:

Postar um comentário