Mandar um café pro programador

Pode me ajudar a transformar cafeína em código?

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.

16 comentários:

  1. paisA=80000
    paisB=200000
    ano=0

    while paisA<paisB:
    paisA*=1.03
    paisB*=1.015
    ano+=1

    print(ano)

    ResponderExcluir
    Respostas
    1. Pensei a mesma coisa camarada

      Excluir
    2. da onde vc achou esses numeros ( 1.03)
      e (1.015) ?

      Excluir
    3. 1.03 é a população total. Se vc só multiplicar por 0.3 vc só vai ter o valor do aumento populacional desprezando o que já tinha.

      Excluir
  2. .03 e .015 é o que passa de 100%, entende? Que corresponde a 3% e 1,5% do valor anterior somado com o valor anterior

    ResponderExcluir
  3. country_a = 80000
    country_b = 200000
    increase_a = (3*country_a)/100 # growth percentage
    count_year = 0
    while country_a != country_b:
    country_a += increase_a
    count_year += 1
    print("São necessários",count_year,"anos para que a população do país A \nultrapasse ou iguale a população do país B")

    ResponderExcluir
  4. count_year = 0
    validador = True
    while validador == True:
    country_a = int(input("Insira o numero de habitantes do país menos populoso:\n"))
    country_b = int(input("Agora do país mais populoso:\n"))
    increase_a = (3*country_a)/100 # growth percentage
    while country_a != country_b:
    country_a += increase_a
    count_year += 1
    print("São necessários",count_year,"anos para que a população do país A \nultrapasse ou iguale a população do país B")
    question = input("Deseja repetir a operação? Digite: [s]sim ou [n]não\n")
    if question == "s" or question == "S" or question == "sim" or question == "Sim":
    validador = True
    elif question == "n" or question == "N" or question == "não" or question == "Não" or question == "Nao" or question == "nao":
    validador = False
    else:
    validador = False
    print("Error: O caractere informado não é valido")
    count_year = 0

    ResponderExcluir
  5. pop_a=80000
    pop_b=200000
    taxa_a= 0.3
    taxa_b=0.15
    counter=0
    while not (pop_a > pop_b) or (pop_a==pop_b):
    pop_a=pop_a*(1+taxa_a)
    pop_b=pop_b*(1+taxa_b)
    counter+=1
    print('o número de anos para a população A igualar ou ultrapssar a população B é:',counter)

    ResponderExcluir
  6. O primeiro exercício tá resolvido de forma parcial. Se o cabra coloca uma letra ou símbolo lá, dá erro:

    x = input("Insira uma nota de 0 a 10: ")

    try:
    int(x)
    inteiro = True
    except:
    inteiro = False

    if inteiro == True:
    x = int(x)
    if x <= 10 and x >= 0:

    print("A nota que você digitou é {}".format(x))
    elif x < 0:
    print("Não existe nota negativa arrombado!!!")
    else:
    print("A nota que você digitou é maior que 10, presta atenção")
    else:
    print("Eu pedi um número inteiro, BOSTA!")

    ResponderExcluir
  7. eu fiz assim e deu certo.
    pra quem ta programando a uma seman apenas ta muito feio?

    código:

    gambiarra=0
    while gambiarra==0:
    nome = str(input('Nome: ')).strip()
    lernome = len(nome)
    if (lernome<3) or (lernome==3):
    print('Nome inválido, digite novamente.')
    elif lernome>3:
    gambiarra=1

    gambiarra2=0
    while gambiarra2==0:
    idade = int(input('Idade: '))
    if (idade < 0) or (idade > 150):
    print('Idade inválida, digite novamente.')
    elif (idade > 0) and(idade <150):
    gambiarra2=1
    gambiarra3=0
    while gambiarra3==0:
    salario=float(input('Salário: '))
    if salario<0:
    print('Salário inválido, Digite novamente.')
    elif salario>0:
    gambiarra3=1
    gambiarra4=0
    while gambiarra4==0:
    sexo = str(input('Sexo.F para feminino e M para masculino: ')).upper()
    buscam = sexo.find('M')
    buscaf = sexo.find('F')
    if (buscam == -1) and (buscaf == -1):
    print('Informação inválida, digite novamente.')
    else:
    gambiarra4=1
    gambiarra5=0
    while gambiarra5==0:
    estadoc=str(input('Estado Civil\n'
    'S para Solteiro\n'
    'C para Casado\n'
    'V para Viúvo\n'
    'D para divorciado\n'
    '\033[31mInsira a letra conrespondente: \033[m')).upper()
    busca2s = estadoc.find('S')
    busca2c = estadoc.find('C')
    busca2v = estadoc.find('V')
    busca2d = estadoc.find('D')
    if (busca2s==-1) and (busca2c==-1) and (busca2v==-1) and (busca2d==-1):
    print('Informação inválida, digite novamente.')
    else:
    gambiarra5 = 1

    print('Seu nome é: {}'.format(nome))
    print('Sua idade é: {} anos'.format(idade))
    print('Seu salário é: R$ {:.2f}'.format(salario))
    print('seu sexo é: {}'.format(sexo))
    print('seu estado civil é: {}'.format(estadoc))

    ResponderExcluir
  8. pop_a = float(80000)
    pop_b = float(200000)
    ano = 0
    executar = True

    while executar == True:
    while pop_a < pop_b:
    ano += 1
    pop_a += pop_a/100 * 3
    pop_b += pop_b/100 * 1.5

    else:
    print("Populaçao A: %d" % pop_a)
    print("População B: %d\n\n" % pop_b)
    print(f'o numero de anos necessário para a população A ultrapassar a B é de : {ano} anos')
    executar = input('quer validar novamente? (s)im ou (n)ão : ')
    if executar == 's':
    executar = True
    else:
    False
    else:
    print('acabou')

    ResponderExcluir
  9. #-*- coding: utf-8 -*-
    a = float(input("Quanto seria a população atual de A:"))
    b = float(input("Quanto seria a população atual de B:"))
    anos = 0
    c = float(input("Quanto seria a taxa de variação de A:"))
    d = float(input("Quanto seria a taxa de variação de B:"))

    while a < b:
    a = c/100 * a
    b = d/100 * b
    anos = anos + 1
    if a > b:
    print("Em", anos, "ano(s) o A será maior que B")

    break

    #-6-#

    ResponderExcluir
  10. qnt_habitantes_paisA = float(800)
    qnt_habitantes_paisB = float(2000)

    taxa_crescimento_paisA = 0.03
    taxa_crescimento_paisB = 0.015

    qnt_anos = 1

    while qnt_habitantes_paisA <= qnt_habitantes_paisB:
    print(f'Em {qnt_anos} ano(s) o país A tem {qnt_habitantes_paisA}'\
    f' e o país B tem {qnt_habitantes_paisB}.')
    qnt_habitantes_paisA = (qnt_habitantes_paisA * taxa_crescimento_paisA) + qnt_habitantes_paisA
    qnt_habitantes_paisB = (qnt_habitantes_paisB * taxa_crescimento_paisB) + qnt_habitantes_paisB
    qnt_anos += 1

    ResponderExcluir
  11. qnt_habitantes_paisA = float(input('Quantidade de habitantes do país A: '))
    print(f'População A: {qnt_habitantes_paisA}', type(qnt_habitantes_paisA))

    qnt_habitantes_paisB = float(input('Quantidade de habitantes do país B: '))
    print(f'População B: {qnt_habitantes_paisB}', type(qnt_habitantes_paisB))

    taxa_crescimento_paisA = float(input('Taxa de crescimento do país A: '))
    print(f'Taxa de crescimento do país A: {taxa_crescimento_paisA}')

    taxa_crescimento_paisB = float(input('Taxa de crescimento do país B: '))
    print(f'Taxa de crescimento do país B: {taxa_crescimento_paisB}')

    qnt_anos = 1

    while qnt_habitantes_paisA <= qnt_habitantes_paisB:
    print(f'Em {qnt_anos} ano(s) o país A tem {qnt_habitantes_paisA}'\
    f' e o país B tem {qnt_habitantes_paisB}.')
    qnt_habitantes_paisA = (qnt_habitantes_paisA * taxa_crescimento_paisA) + qnt_habitantes_paisA
    qnt_habitantes_paisB = (qnt_habitantes_paisB * taxa_crescimento_paisB) + qnt_habitantes_paisB
    qnt_anos += 1

    ResponderExcluir
  12. popa = int(input("digite a populacao da cidade A: "))
    popb = int(input("digite a populacao da cidade B: "))
    taxa_crescimentoa = float(input("digite a taxa de crescimento da cidade A: "))
    taxa_crescimentob = float(input("digite a taxa de crescimento da cidade B: "))
    anos = 0
    while popa < popb:
    popb = float(popb) * ((taxa_crescimentob/100) + 1)

    popa = float(popa) * ((taxa_crescimentoa/100) + 1)
    print(popa)
    anos = anos + 1
    print("se passaram ", anos, "anos ate que a popa ultrapassase a popb")
    print("no ano: ", anos , "a popb e igual a: ", popb)

    ResponderExcluir
  13. #questão05

    taxa_wakanda = float(input("Digite a taxa de crescimento de Wakanda em valor decimal:"))
    taxa_wadiya = float(input("Digite a taxa de crescimento de Wadiya em valor decimal:"))
    ano = 0

    while True:
    wakanda = int(input("Digite a população atual de Wakanda:"))
    if wakanda <=0:
    print("A população não poder ser igual ou menor que 0")
    else:
    break
    while True:
    Wadiya = int(input("Digite a população atual de Wadiya:"))
    if Wadiya <=0:
    print("A população não poder ser igual ou menor que 0")
    else:
    break

    if wakanda>Wadiya:
    maior_populacao = 'Wakanda'
    menor_populacao = 'Wadiya'
    if Wadiya>wakanda:
    maior_populacao = 'Wadiya'
    menor_populacao = 'Wakanda'

    if wakanda <=Wadiya and taxa_wakanda>taxa_wadiya:
    while True:
    if wakanda <=Wadiya and taxa_wakanda>taxa_wadiya:
    crescimento_wakanda = wakanda*taxa_wakanda
    wakanda+=crescimento_wakanda
    crescimento_wadiya = Wadiya*taxa_wadiya
    Wadiya+=crescimento_wadiya
    ano+=1
    else:
    break
    print("Em", ano, "anos a população de", menor_populacao, "ultrapassará a população de", maior_populacao)

    if Wadiya <=wakanda and taxa_wadiya>taxa_wakanda:
    while True:
    if Wadiya <=wakanda and taxa_wadiya>taxa_wakanda:
    crescimento_wakanda = wakanda*taxa_wakanda
    wakanda+=crescimento_wakanda
    crescimento_wadiya = Wadiya*taxa_wadiya
    Wadiya+=crescimento_wadiya
    ano+=1
    else:
    break
    print("Em", ano, "anos a população de", menor_populacao, "ultrapassará a população de", maior_populacao)

    elif Wadiya <=wakanda and taxa_wadiya<taxa_wakanda:
    print("A população de", menor_populacao, "não ultrapassará a população de", maior_populacao,"com a taxa de crescimento informada")

    elif wakanda <=Wadiya and taxa_wakanda<taxa_wadiya:
    print("A população de", menor_populacao, "não ultrapassará a população de", maior_populacao,"com a taxa de crescimento informada")'''

    ResponderExcluir

Bora fazer evoluir o ensino da Programação no Brasil ?

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo