Exercícios de if / Else em Python

Vamos fazer dois exercícios diferentes utilizando if e else para aprender AND e OR e entender variáveis booleanas. Vamos revisar também como encadear if e else na linguagem Python.

Variável Booleana

Este tipo de variável só aceita dois valores possíveis: True (verdadeiro) e False (false). Este tipo de variável é utilizado nos comandos IF (se) e ELSE (senão) pois eles aceitam uma expressão e essa expressão tem um resultado que só pode ser True ou False.

if [expressão]:
  codigo dentro do if
  codigo dentro do if
else:
  codigo dentro do else
  codigo dentro do else
codigo fora do if/else

Para identificar o código que está dentro do if/else utilizamos identação (espaços). É necessário no mínimo 1 espaço para o python identificar que o código faz parte do if ou else, mas o mais comum é utilizar 2 espaços como no exemplo acima. Algumas linguagem utilizam o caractere { e } para identificar onde começa e onde termina o if, como no exemplo abaixo:

if (expressao) {
	codigo dentro do if
 	codigo dentro do if
}
else
{
	codigo dentro do else
 	codigo dentro do else
}
codigo fora do if/else

É importante ressaltar que o else não é necessário, é possível ter apenas um if sem um else embaixo. Para fixarmos estes conceitos vamos resolver dois problemas que precisarão utilizar a lógica do if e else.

Exercícios práticos com if e else em Python

Sistema de Monitoramento de Macacos

Imagina que você tem um laboratório onde você monitora dois macacos, e contrata um estagiário para informar ao sistema se os macacos estão sorrindo de 5 em 5 minutos. Baseado nisto o programa vai imprimir a informação se os macacos estão em sincronia, então as regras são:

  • Se os dois macacos estiverem sorrindo -> em sincronia
  • Se os dois macacos não estiverem sorrindo -> em sincronia
  • Se apenas um macaco estiver sorrindo -> fora sincronia

Obtendo input de usuário em Python

Para começar, vamos usar nosso código básico para obter input do usuário (se precisa refrescar sua memória veja aqui: Meu primeiro Software.  Vamos utilizar os valores “S” para quando o macaco estiver sorrindo e “N” para quando o macaco não estiver sorrindo:

print('------------------------')
print('SISTEMA DE MONITORAMENTO DE MACACOS')
print('------------------------')
print("Indique se o macaco está sorrindo.")
print("Digite S para sim e N para não.")

macaco1_sorrindo = input("Macaco 1 está sorrindo?:")
macaco2_sorrindo = input("Macaco 2 está sorrindo?:")

Começando pela primeira condição, onde ambos macacos estão sorrindo podemos escrever o if assim:

if macaco1_sorrindo == "S" and macaco2_sorrindo == "S":

Neste if estamos utilizando uma nova palavra: and. And em inglês significa E, por isso se quisermos testar se duas condições são verdadeiras utilizamos and. O if acima significa -> se macaco1_sorrindo igual a “S” E macaco2_sorrindo igual a “S”. Para o código entrar no if, ambas as expressões precisam ser verdadeiras.

Há ainda uma outra palavra utilizada para encadear expressões: or. Or em inglês significa OU, usamos or quando precisamos que apenas uma das expressões sejam verdadeiras para entrar no if.

Então podemos escrever todas as regras desta forma:

if macaco1_sorrindo == "S" and macaco2_sorrindo == "S":
	print("Em sincronia")
if macaco1_sorrindo == "N" and macaco2_sorrindo == "N":
	print("Em sincronia")
else:
	print("Fora de sincronia")

Se você executar o código acima perceberá um bug, se enviar o valor S para ambos os macacos, a frase “Fora de sincronia” também foi impressa:

Isto ocorre porque o else sempre se refere ao if anterior, e no caso como o if anterior retornou false (por que nenhum dos macacos está com o valor “N”), o else foi executado. Para corrigir este problema podemos utilizar um outro operador elif que é equivalente a um else com um if, ou else if, que também pode receber uma expressão:

if macaco1_sorrindo == "S" and macaco2_sorrindo == "S":
	print("Em sincronia")
elif macaco1_sorrindo == "N" and macaco2_sorrindo == "N":
	print("Em sincronia")
else:
	print("Fora de sincronia")

If único com várias expressões

É possível alterar este código para utilizar apenas um if, colocando todas as regras de sincronia em um if usando or:

if (macaco1_sorrindo == "S" and macaco2_sorrindo == "S") or (macaco1_sorrindo == "N" and macaco2_sorrindo == "N"):
	print("Em sincronia")
else:
	print("Fora de sincronia")

Veja que utilizamos parenteses para separar cada uma das expressões. Isto é necessário pois você precisa informar a ordem em que as expressões serão resolvidas, tudo que está entre parenteses é resolvido primeiro e o resultado das duas expressões entre parenteses é comparado com or.

Há ainda outra maneira de simplificar este código, podemos apenas comparar as duas variáveis dos macacos, pois se elas foram iguais, os macacos estão em sincronia, se não forem iguais, estão fora de sincronia, o if fica mais simples:

if macaco1_sorrindo == macaco2_sorrindo:
	print("Em sincronia")
else:
	print("Fora de sincronia")

Versão final: https://repl.it/@julianajuliano/Macacos-sorridentes

Sistema para o Pet Shop

Imagina que você consegue atender entre 20 e 30 cães durante a semana no seu Pet Shop. Se atender menos do que 20 cães, o pet shop ficou ocioso, se você atendeu mais do que 30 significa que o cliente foi até o local mas não pode ser atendido. Já no final de semana você reforça a equipe para atender entre 20 e 40 cães.

Primeiro passo é obter os dados do usuário:

atendidos = int(input("Cães atendidos: "))
final_de_semana_usuario = input("Final de semana (S/N): ")

Precisaremos transformar a variável final_de_semana em booleano, como o único valor possível em que a variável é verdadeira é igual a “S”, basta comparar com a string “S”:

final_de_semana_usuario = input("Final de semana (S/N): ")
final_de_semana = final_de_semana_usuario == "S"

Neste caso, se o usuário digitar “S” a variável final_de_semana terá o valor True, em qualquer outro caso terá o valor False. Para este caso podemos utilizar dois ifs encadeados e utilizaremos também o operador >= (maior ou igual) e <= (menor ou igual):

if final_de_semana:
	if atendimentos <= 20 and atendimentso >= 40:
    	print("SUCESSO")
    else
    	print("FRACASSO")
else:
    if atendimentos <= 20 and atendimentso >= 30:
    	print("SUCESSO")
   	else
    	print("FRACASSO")

Versão final: https://repl.it/@julianajuliano/Pet-Shop

Image by StartupStockPhotos from Pixabay