Hoje o computador aprende a decidir. Vocรช vai dominar if, else, elif e os operadores de comparaรงรฃo e lรณgicos โ e fazer o seu primeiro programa que pensa. ๐คฏ
Atรฉ agora seus programas seguiam um caminho sรณ, em linha reta: pega o nome โ mostra o nome. Mas a vida real nรฃo รฉ assim โ a gente toma decisรตes o tempo todo:
Pela primeira vez, o seu programa vai olhar para um valor, pensar e escolher um caminho de execuรงรฃo. Ele deixa de ser uma esteira e vira um cruzamento ๐ฃ๏ธ.
E olha que coisa linda: tudo isso com 3 palavrinhas โ
if, else, elif.
if sempre รฉ executado.else รฉ opcional.elif em sequรชncia.if para perguntar "quando?".ifImagina um garรงom ๐งโ๐ณ anotando seu pedido. Antes de mandar pra cozinha, ele pensa: "SE o cliente รฉ maior de idade, posso colocar a cerveja no pedido."
Ele verifica, e sรณ executa se a condiรงรฃo bater. ร exatamente isso que o if faz.
if seguido da condiรงรฃo, dois pontos : e o bloco indentado:
idade = 22 if idade >= 18: print("Pode entrar! ๐")
if sรฃo obrigatรณrios.
E o print debaixo precisa estar indentado (4 espaรงos).
Esse "andar pra dentro" รฉ como o Python sabe o que pertence ao bloco do if.
Se mudarmos pra idade = 15, o if simplesmente รฉ
pulado. Nada aparece na tela. Bora visualizar isso:
else โ "senรฃo"
E se a condiรงรฃo for falsa? A gente quer mostrar outra coisa.
Pra isso existe o else โ em portuguรชs, "senรฃo".
idade = int(input("Sua idade: ")) if idade >= 18: print("Pode entrar! ๐") else: print("Volte com 18 anos. โ")
O programa olha a idade, faz a pergunta e segue um e sรณ um caminho.
Veja a animaรงรฃo abaixo (autoplay ๐ช):
if/else garante.
Bora consolidar: peรงa a idade do usuรกrio e diga se ela pode votar (idade >= 16).
idade = int(input("Sua idade: ")) if idade >= 16: print("๐ณ๏ธ Vocรช pode votar!") else: print("โณ Ainda nรฃo pode votar.")
elif โ mรบltiplos caminhos
O garรงom pergunta: "O que vai querer?" e vocรช tem
vรกrias opรงรตes: pizza, lasanha, salada, hambรบrguerโฆ
Nรฃo dรก pra resolver com if/else โ sรณ dรก conta de duas escolhas.
Aรญ entra o elif: "else if" โ se nรฃo for o anterior, serรก que รฉ esse?
Trรชs cores, trรชs comportamentos. Decisรฃo clรกssica de elif:
cor = input("Cor do sinal: ") if cor == "verde": print("๐ข Pode seguir!") elif cor == "amarelo": print("๐ก Atenรงรฃo, vai fechar!") elif cor == "vermelho": print("๐ด Pare!") else: print("๐ค Cor desconhecida...")
if e um else
numa mesma estrutura, mas quantos elif vocรช quiser no meio.
Imagina que vocรช รฉ o seguranรงa ๐ฆบ de um evento e precisa decidir o que dizer
a cada pessoa que chega, dependendo da idade. Crie um arquivo
entrada_evento.py e:
1. Peรงa a idade do usuรกrio com input()
e converta com int() (lembra do cap 02?).
2. Use if/elif/else com 3 faixas:
โข idade < 16 โ "Entrada nรฃo permitida ๐ซ"
โข 16 a 17 โ "Entrada apenas com responsรกvel ๐จโ๐ง"
โข 18 ou mais โ "Entrada liberada! ๐"
Lembra do elif cor == "amarelo":? Aqui รฉ a mesma ideia, sรณ que com
nรบmeros (use <, >=).
# pega a idade e converte pra inteiro idade = int(input("Sua idade: ")) if idade < 16: print("๐ซ Entrada nรฃo permitida.") elif idade < 18: print("๐จโ๐ง Entrada apenas com responsรกvel.") else: print("๐ Entrada liberada!")
elif idade < 18 roda, ele jรก sabe que
a idade nรฃo รฉ menor que 16 (senรฃo teria caรญdo no if).
Por isso esse elif cobre exatamente a faixa 16-17.
Toda condiรงรฃo que vocรช coloca dentro de um if usa um operador de comparaรงรฃo.
Sรฃo 6 โ e vocรช jรก viu alguns. Bora oficializar:
3 == 3 โ True 3 == 4 โ False3 != 4 โ True 3 != 3 โ False5 > 3 โ True 3 > 5 โ False3 < 5 โ True 5 < 3 โ False3 >= 3 โ True 2 >= 3 โ False3 <= 3 โ True 4 <= 3 โ False= (uma igualdade) รฉ
atribuiรงรฃo (eu coloco um valor numa variรกvel).
== (duas) รฉ comparaรงรฃo (eu pergunto se sรฃo iguais).
Esse erro รฉ tรฃo comum que o BugZilla vai aparecer em breve sรณ por causa dele ๐.
and, or, notE se a condiรงรฃo for composta? Ex.: "se for sexta E der pra sair cedo, bora pra praia ๐๏ธ". A gente combina condiรงรตes com 3 palavrinhas:
idade >= 18 and tem_ingresso
dia == "sab" or dia == "dom"
not chovendo
idade = 20 tem_convite = True if idade >= 18 and tem_convite: print("Bem-vindo(a) ao clube! ๐") else: print("Acesso negado ๐ซ")
and como dois cadeados โ
os dois precisam abrir. O or รฉ uma porta com duas chaves โ
qualquer uma serve. O not รฉ o avesso (vira do lado contrรกrio).
Cenรกrio: vocรช tรก montando o checkout de uma loja. Se o valor do pedido for maior que R$100, o frete รฉ grรกtis. Senรฃo, frete custa R$15.
valor_pedido = float(input("Valor do pedido: R$ ")) if valor_pedido > 100: print("๐ Frete GRรTIS! Total: R$", valor_pedido) else: frete = 15 print(f"Frete: R$ {frete}. Total: R$ {valor_pedido + frete:.2f}")
float()? Aqui usamos pra aceitar
valores com casas decimais (R$ 79,90 etc). Jรก o int() sรณ pega inteiros.
Animaรงรฃo rolando: o programa decide o que oferecer:
Passo a passo:
input().if/elif/else pra decidir a promoรงรฃo.dia = input("Que dia รฉ hoje? ").lower() if dia == "segunda": print("๐ค Hoje tem 10% de desconto!") elif dia == "sexta": print("๐ฐ Sobremesa grรกtis no seu pedido!") else: print("๐ฝ๏ธ Bom pedido! Sem promoรงรฃo hoje.")
.lower()? Ele transforma o que o usuรกrio digitou
em minรบsculo. Assim, "Sexta", "SEXTA" ou "sexta" todos funcionam igual โ
truque importante quando vocรช compara strings!
Tem 2 erros que todo mundo comete na primeira vez com if/else. Bora desmistificar agora pra vocรช nรฃo cair neles ๐.
= com ==
Esse รฉ o clรกssico dos clรกssicos. = atribui,
== compara.
if idade = 18:
print("OK")
SyntaxError โ Python reclama na hora.
if idade == 18:
print("OK")
"รฉ igual a 18?" โ perfeito.
=. Se vocรช quer
perguntar, รฉ ==.
:
O : no fim do if / elif / else
รฉ obrigatรณrio โ รฉ como o Python sabe onde comeรงa o bloco.
if idade >= 18
print("OK")
SyntaxError: expected ':'
if idade >= 18:
print("OK")
Os dois pontinhos no fim. Sempre.
if,
a primeira coisa que vocรช confere รฉ se tem o : e se a prรณxima linha
estรก indentada (4 espaรงos).
Crie descontos.py. O programa pergunta o valor da compra e
aplica desconto por faixa:
โข atรฉ R$ 50 โ sem desconto
โข R$ 51 a R$ 200 โ 5% de desconto
โข R$ 201 a R$ 500 โ 10% de desconto
โข acima de R$ 500 โ 15% de desconto
Passos:
1) leia com float(input(...));
2) use if/elif/else pra escolher o desconto;
3) calcule o valor final e mostre uma f-string bonita com 2 casas decimais
(f"{total:.2f}").
Lembra do entrada_evento.py? A estrutura do elif com
faixas de nรบmero รฉ igualzinha โ sรณ muda a regra do negรณcio.
# pega o valor da compra (com casas decimais) valor = float(input("Valor da compra: R$ ")) if valor <= 50: desconto = 0 elif valor <= 200: desconto = 0.05 elif valor <= 500: desconto = 0.10 else: desconto = 0.15 total = valor * (1 - desconto) print(f"Desconto aplicado: {desconto*100:.0f}%") print(f"Total a pagar: R$ {total:.2f}")
elif valor <= 500,
ele jรก sabe que o valor รฉ maior que 200 โ entรฃo cobre exatamente a faixa 201-500.
Essa รฉ a beleza do encadeamento.
Junta tudo num mini_sistema.py de cadastro de cliente VIP:
1. Pergunte nome, idade e
se รฉ assinante (responde "sim"/"nรฃo").
2. Use and pra descobrir se a pessoa รฉ
maior de 18 E assinante โ "Cliente VIP! ๐"
3. Senรฃo, mostre uma mensagem amigรกvel usando o nome.
input, if/else e o operador and. Vocรช consegue!
nome = input("Seu nome: ") idade = int(input("Sua idade: ")) assinante = input("ร assinante? (sim/nรฃo): ").lower() if idade >= 18 and assinante == "sim": print(f"๐ {nome}, vocรช รฉ Cliente VIP!") else: print(f"Olรก {nome}! Bora virar VIP? ๐")
Capรญtulo 04 โ Loops e Listas.
Vocรช aprendeu a decidir. Agora vai aprender a repetir โ
while, for e listas. Bora?