Nesta aula, vamos dar um passo importante: ensinar o Python a tomar decisões.

Até agora, nossos programas executavam as instruções em sequência. A partir desta aula, eles poderão escolher caminhos diferentes dependendo das informações recebidas.

Vamos aproveitar a calculadora criada na Aula 3 e transformá-la em uma calculadora interativa, na qual o usuário escolhe a operação e o programa evita divisões por zero.

Na aula anterior, nós criamos nossa primeira calculadora em Python.

Mas ela tinha um problema: sempre realizava todas as operações, mesmo que o usuário quisesse fazer apenas uma soma.

E tinha outro problema ainda pior: se tentássemos dividir por zero, o programa apresentava um erro.

Hoje vamos resolver essas duas situações.

Você vai aprender a utilizar if, elif e else para fazer o Python tomar decisões.

E, no final, vamos transformar nossa calculadora em um programa muito mais interessante.

Imagine um aplicativo que precisa verificar se uma pessoa tem idade suficiente para acessar determinado conteúdo.

Se a pessoa tiver 18 anos ou mais, o programa permite o acesso.

Caso contrário, mostra uma mensagem informando que o acesso não é permitido.

Isso é uma estrutura condicional.

O programa verifica uma condição e, dependendo do resultado, executa uma instrução diferente.

Começamos pedindo a idade do usuário.

Como precisamos trabalhar com um número inteiro, utilizamos int para converter o resultado do input.

Agora escrevemos if, que significa “se” em inglês.

Depois colocamos a condição: idade maior ou igual a 18.

Se essa condição for verdadeira, o Python executa o comando que está dentro do if.

Vamos testar com 20 anos.

O programa mostra que a pessoa é maior de idade.

Agora vamos testar com 15.

Dessa vez, nenhuma mensagem aparece.

Isso acontece porque a condição é falsa e ainda não ensinamos ao Python o que fazer nessa situação.

idade = int(input("Idade: "))
if idade >= 18:
print("Maior de idade")

Antes de continuar, precisamos entender um detalhe extremamente importante.

Repare que o print dentro do if está um pouco mais à direita.

Isso se chama indentação.

No Python, a indentação define quais instruções pertencem a determinado bloco de código.

Normalmente utilizamos quatro espaços, e o VS Code pode inserir esses espaços automaticamente quando pressionamos Tab.

A mensagem “Maior de idade” só será exibida se a condição for verdadeira.

Já a mensagem “Fim” será executada independentemente do resultado, porque está fora do bloco condicional.

Também não podemos esquecer dos dois-pontos no final da linha do if.

Agora vamos testar o que acontece se digito 17, aparece somente Fim. E com 18, aparecem Maior de idade, Acesso liberado e Fim.

Agora vamos resolver o problema de quando a idade é menor que 18.

O else significa “senão”.

Se a condição do if for verdadeira, o primeiro bloco será executado.

Caso contrário, o Python executa o bloco do else.

Vamos testar novamente.

Com 20 anos, recebemos a mensagem de maioridade.

Com 15 anos, recebemos a mensagem de menoridade.

Perceba que não precisamos escrever uma nova condição depois do else.

Ele representa justamente o caminho alternativo.

idade = int(input("Idade: "))
if idade >= 18:
print("Maior de idade")
else:
print("Menor de idade")

Para tomar decisões, precisamos comparar valores.

Esses são os principais operadores de comparação do Python.

Um detalhe importante: para verificar igualdade, utilizamos dois sinais de igual.

Um único sinal de igual é utilizado para atribuir um valor a uma variável.

Já dois sinais de igual são utilizados para comparar valores.

Vamos ver isso funcionando.

Lembra do tipo booleano que vimos na Aula 2?

Aqui ele aparece novamente.

As comparações desse exemplo retorna True ou False.

E são justamente esse tipo de  resultados que o if utiliza para decidir qual bloco executar.

Até agora trabalhamos com apenas duas possibilidades.

Mas imagine um programa que precisa classificar uma nota como excelente, suficiente ou insuficiente.

Para isso, podemos utilizar elif.

O elif permite verificar outra condição caso as anteriores sejam falsas.

Primeiro verificamos se a nota é maior ou igual a sete.

Se for, mostramos “Aprovado”.

Se não for, o Python verifica a próxima condição.

Se a nota for maior ou igual a cinco, mostramos “Recuperação”.

E, caso nenhuma das condições anteriores seja verdadeira, mostramos “Reprovado”.

Observe que o Python verifica as condições na ordem em que aparecem e executa apenas o primeiro bloco correspondente nessa estrutura.

Por isso, a ordem das condições é importante.

nota = float(input("Nota: "))
if nota >= 7:
print("Aprovado")
elif nota >= 5:
print("Recuperação")
else:
print("Reprovado")

Às vezes precisamos verificar mais de uma condição ao mesmo tempo.

Imagine que uma pessoa só possa acessar determinada área se tiver 18 anos ou mais e possuir autorização,

Ou uma condição de que a nota tenha que ser maior ou igual a zero e menor ou igual a 10

Podemos utilizar and.

nota >= 0 and nota <= 10

Com and, as duas condições precisam ser verdadeiras.

Já com or, basta que pelo menos uma delas seja verdadeira.

nota < 0 or nota > 10

E o operador not inverte o resultado lógico. Não precisamos decorar todas as combinações agora. Vamos praticar esses operadores em outros projetos ao longo do curso

Agora chegou a hora de aplicar tudo o que aprendemos.

Vamos pegar a calculadora da Aula 3 e fazer uma melhoria importante.

Dessa vez, o usuário poderá escolher qual operação deseja realizar.

E vamos impedir que o programa tente dividir por zero.

Primeiro criamos um menu com quatro opções.

Depois utilizamos input para receber a escolha do usuário.

Aqui vamos manter a opção como texto.

Isso significa que vamos compará-la com “1”, “2”, “3” ou “4”, utilizando aspas.

Agora recebemos os dois números e convertemos para float, permitindo trabalhar também com valores decimais.

Agora utilizamos if, elif e else.

Se o usuário escolher a opção um, realizamos a soma.

Se escolher dois, fazemos a subtração.

E assim sucessivamente.

Caso escolha uma opção diferente das disponíveis, mostramos uma mensagem de erro.

Mas ainda precisamos resolver a divisão por zero e garantir que o resultado seja exibido corretamente.

Para isso, colocamos um novo if  dentro do elif da opção 4, divisão. O Oif irá verificar se o n2 é zero, se for, retporna a mensagem de que não é possível dividir por zero, se não (o else) ele traz o resultado da divisão.

print("=== CALCULADORA PYTHON ===")
print("1 - Soma")
print("2 - Subtração")
print("3 - Multiplicação")
print("4 - Divisão")
opcao = input("Opção: ")


valida = (opcao == "1" or opcao == "2"
or opcao == "3" or opcao == "4")
if not valida:
print("Opção inválida")
else:
n1 = float(input("Número 1: "))
n2 = float(input("Número 2: "))

if opcao == "1":
print("Resultado:", n1 + n2)
elif opcao == "2":
print("Resultado:", n1 - n2)
elif opcao == "3":
print("Resultado:", n1 * n2)
elif opcao == "4":
if n2 == 0:
print("Não é possível dividir por zero")
else:
print("Resultado:", n1 / n2)

Observe que o caminho do nosso código foi:

Definimos um dicionário de opções,

verificamos primeiro se a opção escolhida é válida.

Se for, pedimos os números.

Depois verificamos qual operação deve ser executada.

E, no caso da divisão, utilizamos outro if para conferir se o segundo número é diferente de zero.

Isso é chamado de condicional aninhada: uma estrutura condicional dentro de outra.

Se o segundo número for zero, mostramos uma mensagem informando que a divisão não é possível.

E nossa calculadora ficou muito mais interessante!

Agora chegou sua vez.

Crie um programa que receba a nota de um aluno e classifique o resultado.

Se a nota estiver entre sete e dez, mostre “Aprovado”.

Se estiver entre cinco e menos de sete, mostre “Recuperação”.

Caso seja inferior a cinco, mostre “Reprovado”.

E aqui vai um desafio extra: faça o programa identificar notas inválidas, como menos dois ou quinze.

Tente resolver utilizando if, elif, else e os operadores que aprendemos hoje.

Hoje aprendemos a fazer o Python tomar decisões.

Conhecemos o if, o elif e o else, utilizamos operadores de comparação e combinamos condições com operadores lógicos. Também entendemos a importância da indentação e aplicamos tudo isso para melhorar nossa calculadora

Nossa calculadora já consegue tomar decisões.

Mas ainda existe uma limitação.

Se quisermos fazer outro cálculo, precisamos executar o programa novamente.

E se pudéssemos criar um programa que continuasse funcionando até o usuário decidir sair?

Na próxima aula vamos aprender as estruturas de repetição for e while.

Com elas, o Python poderá executar instruções várias vezes automaticamente. E esse será mais um passo importante para começarmos a criar nossas próprias automações