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:
- Nome: maior que 3 caracteres;
- Idade: entre 0 e 150;
- Salário: maior que zero;
- Sexo: 'f' ou 'm';
- Estado Civil: 's', 'c', 'v', 'd';
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.
paisA=80000
ResponderExcluirpaisB=200000
ano=0
while paisA<paisB:
paisA*=1.03
paisB*=1.015
ano+=1
print(ano)
Pensei a mesma coisa camarada
Excluirda onde vc achou esses numeros ( 1.03)
Excluire (1.015) ?
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.03 e .015 é o que passa de 100%, entende? Que corresponde a 3% e 1,5% do valor anterior somado com o valor anterior
ResponderExcluircountry_a = 80000
ResponderExcluircountry_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")
count_year = 0
ResponderExcluirvalidador = 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
pop_a=80000
ResponderExcluirpop_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)
O primeiro exercício tá resolvido de forma parcial. Se o cabra coloca uma letra ou símbolo lá, dá erro:
ResponderExcluirx = 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!")
eu fiz assim e deu certo.
ResponderExcluirpra 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))
pop_a = float(80000)
ResponderExcluirpop_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')
#-*- coding: utf-8 -*-
ResponderExcluira = 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-#
qnt_habitantes_paisA = float(800)
ResponderExcluirqnt_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
qnt_habitantes_paisA = float(input('Quantidade de habitantes do país A: '))
ResponderExcluirprint(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
popa = int(input("digite a populacao da cidade A: "))
ResponderExcluirpopb = 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)
#questão05
ResponderExcluirtaxa_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")'''
Exercicio 5
ResponderExcluirpopulacao_a = float(input("Digite a população da cidade A: "))
taxa_a = float(input("Digite a porcentagem de crescimento anual da cidade A: "))
populacao_b = float(input("Digite a população da cidade B: "))
taxa_b = float(input("Digite a porcentagem de crescimento anual da cidade B: "))
ano = 0
while populacao_a < populacao_b:
ano += 1
populacao_a += (populacao_a * (taxa_a / 100))
populacao_b += (populacao_b * (taxa_b /100))
print("Após", ano,"anos, a cidade A tem um total de", round(populacao_a,2),"habitantes e a cidade B", round(populacao_b,2), "de habitantes")
repetir = input("Deseja repetir a operação [S/N]? ")
while repetir == "S":
populacao_a = float(input("Digite a população da cidade A: "))
taxa_a = float(input("Digite a porcentagem de crescimento anual da cidade A: "))
populacao_b = float(input("Digite a população da cidade B: "))
taxa_b = float(input("Digite a porcentagem de crescimento anual da cidade B: "))
ano = 0
while populacao_a < populacao_b:
ano += 1
populacao_a += (populacao_a * (taxa_a / 100))
populacao_b += (populacao_b * (taxa_b /100))
print("Após", ano,"anos, a cidade A tem um total de", round(populacao_a,2),"habitantes e a cidade B", round(populacao_b,2), "de habitantes")
repetir = input("Deseja repetir a operação [S/N]? ")
Alguem pode me responder pq esse codigo da bug quando "usuario" digita numero na casa do milhao?
ResponderExcluircountry_a = int(input('numero de habitantes: '))
while country_a < 0:
country_a = int(input('Populacao deve ser maior que 0: '))
taxa_a = float(input('Taxa de crescimeto da cidade: '))
country_b = int(input('numero de habitantes: '))
while country_b < 0:
country_b = int(input('Populacao deve ser maior que 0: '))
taxa_b = float(input('Taxa de crescimeto da cidade: '))
ano = 0
while country_a < country_b:
ano += 1
country_a = int((1 + (taxa_a / 100)) * country_a)
country_b = int((1 + (taxa_b / 100)) * country_b)
print('Ano %d:' % ano)
print('Populacao: %d' % country_a)
print('Populacao: %d' % country_b)
print('Ultrapassa no ano: ',ano)
Ex: vc poe
a:
- taxa: 0.03
- populacao: 300_000_000
b:
- taxa: 0.033
- populacao: 100_000_000
(mesmo sem o underline da bug)