Segunda lição de Python: aprenda comparações, valores booleanos, if, elif, else, operadores lógicos e como fazer programas tomarem decisões.
Python lição 2: Nesta lição, você vai aprender a fazer o programa tomar decisões.
Até agora, nosso código executava uma sequência fixa. Agora vamos ensinar o Python a responder perguntas como:
- o usuário é maior de idade?
- a senha está correta?
- o número é positivo?
- a nota foi suficiente para aprovação?
- o número é par ou ímpar?
Nesta segunda lição, você aprenderá:
- operadores de comparação;
- valores booleanos;
if;elif;else;- operadores lógicos;
- condições compostas;
- condições aninhadas;
- validação de entradas;
- exercícios práticos.
Na lição anterior, vimos o tipo:
boolEle possui apenas dois valores:
True
FalseExemplo:
idade = 20
print(idade >= 18)Resultado:
True
Porque 20 realmente é maior ou igual a 18.
Agora:
idade = 15
print(idade >= 18)Resultado:
False
Esses valores são a base das decisões em programação.
Python possui operadores para comparar valores.
| Operador | Significado |
|---|---|
== | igual |
!= | diferente |
> | maior que |
< | menor que |
>= | maior ou igual |
<= | menor ou igual |
Exemplo:
idade = 20
print(idade == 20)
print(idade != 20)
print(idade > 18)
print(idade < 18)
print(idade >= 20)
print(idade <= 20)Resultado:
True
False
True
False
True
True
Esse é um dos erros mais comuns de iniciantes.
Um único = significa:
idade = 20atribua
20à variávelidade.
Já:
idade == 20significa:
idade é igual a 20?
Portanto:
= atribuição
== comparação
Essa diferença é fundamental.
if significa aproximadamente:
se
Exemplo:
idade = 20
if idade >= 18:
print("Você é maior de idade.")Python verifica:
idade >= 18Se o resultado for:
Trueexecuta:
print("Você é maior de idade.")Se for False, essa linha é ignorada.
Observe:
if idade >= 18:
print("Você é maior de idade.")O espaço antes de:
print()é chamado de indentação.
Python usa a indentação para identificar quais linhas pertencem ao if.
Errado:
if idade >= 18:
print("Você é maior de idade.")Correto:
if idade >= 18:
print("Você é maior de idade.")Normalmente usamos quatro espaços por nível de indentação.
Agora podemos dizer:
se isso acontecer, faça uma coisa; caso contrário, faça outra.
idade = int(input("Digite sua idade: "))
if idade >= 18:
print("Você é maior de idade.")
else:
print("Você é menor de idade.")Se o usuário digitar 20, o resultado será:
Você é maior de idade.
Se digitar 15:
Você é menor de idade.
Leia este código:
idade = 17
if idade >= 18:
print("Adulto")
else:
print("Menor")O computador pensa aproximadamente assim:
idade é maior ou igual a 18?
|
não
|
Menor
Se a idade fosse 25:
idade é maior ou igual a 18?
|
sim
|
Adulto
Às vezes existem mais de duas possibilidades.
nota = 7
if nota >= 9:
print("Excelente")
elif nota >= 7:
print("Aprovado")
elif nota >= 5:
print("Recuperação")
else:
print("Reprovado")Resultado:
Aprovado
elif significa aproximadamente:
caso contrário, se…
Python testa as condições de cima para baixo.
Observe:
nota = 10
if nota >= 5:
print("Aprovado")
elif nota >= 9:
print("Excelente")Resultado:
Aprovado
Mesmo a nota sendo 10.
Isso acontece porque Python encontrou primeiro nota >= 5, que é verdadeiro. Depois disso, ignora os demais elif.
Uma versão melhor:
if nota >= 9:
print("Excelente")
elif nota >= 7:
print("Aprovado")
elif nota >= 5:
print("Recuperação")
else:
print("Reprovado")Coloque condições mais específicas antes das mais gerais.
Na lição anterior, aprendemos o operador %.
Agora podemos usá-lo com if:
numero = int(input("Digite um número: "))
if numero % 2 == 0:
print("O número é par.")
else:
print("O número é ímpar.")Se o usuário digitar 8, o resto de 8 % 2 será 0. Logo, o número é par.
Também podemos comparar strings.
senha = input("Digite a senha: ")
if senha == "python123":
print("Acesso permitido.")
else:
print("Senha incorreta.")Python diferencia letras maiúsculas de minúsculas. Portanto:
python123
é diferente de:
Python123
and significa:
e
As duas condições precisam ser verdadeiras.
idade = 25
tem_carteira = True
if idade >= 18 and tem_carteira:
print("Pode dirigir.")or significa:
ou
Basta uma condição ser verdadeira.
dia = "sábado"
if dia == "sábado" or dia == "domingo":
print("É fim de semana.")not significa:
não
Ele inverte um valor booleano.
logado = False
print(not logado)Resultado:
True
Também podemos escrever:
logado = False
if not logado:
print("Faça login.")True and True -> True
True and False -> False
False and True -> False
False and False -> False
Com and, tudo precisa ser verdadeiro.
True or True -> True
True or False -> True
False or True -> True
False or False -> False
Com or, basta uma condição verdadeira.
idade = int(input("Digite sua idade: "))
tem_ingresso = input("Possui ingresso? (sim/não): ")
if idade >= 18 and tem_ingresso == "sim":
print("Entrada liberada.")
else:
print("Entrada negada.")Para entrar, as duas condições precisam ser atendidas:
- ter 18 anos ou mais;
- possuir ingresso.
Também podemos colocar um if dentro de outro.
Isso é chamado de condição aninhada.
idade = int(input("Digite sua idade: "))
if idade >= 18:
possui_carteira = input("Possui carteira? ")
if possui_carteira == "sim":
print("Você pode dirigir.")
else:
print("Você é maior de idade, mas não possui carteira.")
else:
print("Você ainda é menor de idade.")Isso funciona, mas nem sempre é a forma mais simples.
Muitas vezes podemos substituir condições aninhadas por condições compostas usando and.
numero = float(input("Digite um número: "))
if numero > 0:
print("Número positivo.")
elif numero < 0:
print("Número negativo.")
else:
print("O número é zero.")Aqui temos três possibilidades:
- positivo;
- negativo;
- zero.
nota = float(input("Digite sua nota: "))
if nota >= 9:
print("Excelente!")
elif nota >= 7:
print("Aprovado.")
elif nota >= 5:
print("Recuperação.")
else:
print("Reprovado.")Mas existe um problema: o usuário poderia digitar 200 ou -50.
Podemos melhorar:
nota = float(input("Digite sua nota: "))
if nota < 0 or nota > 10:
print("Nota inválida.")
elif nota >= 9:
print("Excelente!")
elif nota >= 7:
print("Aprovado.")
elif nota >= 5:
print("Recuperação.")
else:
print("Reprovado.")Agora o programa trata entradas fora do intervalo permitido.
Não pense apenas no caminho correto; pense também no que pode dar errado.
usuario = input("Usuário: ")
senha = input("Senha: ")
if usuario == "admin" and senha == "1234":
print("Login realizado com sucesso.")
else:
print("Usuário ou senha incorretos.")As duas condições precisam ser verdadeiras.
Você não precisa escrever:
if ativo == True:
print("Ativo")Pode escrever:
if ativo:
print("Ativo")Da mesma forma:
if ativo == False:pode ser:
if not ativo:Isso deixa o código mais limpo e natural em Python.
Resolva os exercícios antes de pedir a solução.
Peça a idade do usuário.
Mostre:
Maior de idade.
ou:
Menor de idade.
Peça um número inteiro e descubra se ele é par ou ímpar.
Use:
%Peça um número e mostre se ele é:
- positivo;
- negativo;
- zero.
Peça dois números e mostre qual deles é maior.
Exemplo:
Primeiro número: 10
Segundo número: 25
25 é o maior número.
Pense também no caso em que os dois são iguais.
Peça uma nota de 0 a 10.
Regras:
nota >= 7 -> aprovado
nota >= 5 -> recuperação
nota < 5 -> reprovado
Também trate notas inválidas.
Crie um programa que peça:
- idade;
- se a pessoa possui ingresso.
A pessoa só pode entrar se tiver 18 anos ou mais e possuir ingresso.
Exemplo:
Idade: 22
Possui ingresso? sim
Entrada liberada.
Outro exemplo:
Idade: 16
Possui ingresso? sim
Entrada negada.
Peça:
- primeiro número;
- segundo número;
- operação.
O usuário poderá escolher:
+
-
*
/
Exemplo:
Primeiro número: 10
Segundo número: 2
Operação: *
Resultado: 20
Use if, elif e else.
Lembre-se de tratar um problema importante:
10 / 0Divisão por zero não é permitida.
Seu programa deve impedir isso.
Antes de avançar, você deve entender muito bem:
==
!=
>
<
>=
<=e conseguir usar:
if
elif
elseAlém de:
and
or
notVocê também deve conseguir explicar por que este código funciona:
idade = int(input("Idade: "))
tem_ingresso = input("Tem ingresso? ")
if idade >= 18 and tem_ingresso == "sim":
print("Entrada permitida.")
else:
print("Entrada negada.")E, mais importante, deve entender a ideia central desta lição:
Programas podem escolher caminhos diferentes dependendo dos dados e das condições.
Quando esses fundamentos estiverem sólidos, a próxima etapa será a Lição 3, com loops e repetição, usando while, for e range() para fazer o computador repetir tarefas sem duplicar código.
Veja também: mais conteúdos sobre Python.
Python Level 1 – O Básico que funciona (Jogos, python e IA) (Portuguese Edition)
Python Level 1 - O Básico que funciona (Jogos, python e IA) (Portuguese Edition). Produto recomendado para estudos, programação e produtividade.




