Até agora os programas eram sequenciais: executam todas as linhas, de cima para baixo, sempre pela mesma ordem.
Com a seleção, o programa escolhe que linhas executar, consoante uma condição ser verdadeira ou falsa.
A seleção simples executa um bloco de instruções apenas se a condição for verdadeira.
Se for falsa, o programa salta o bloco e continua.
idade = int(input("Idade: "))
if idade >= 18:
print("Podes votar.")
print("Fim do programa.")
Observa o que acontece quando:
A idade é 20 anos
A idade é 15 anos
Indentação: Espaço ou recuo inserido entre a margem e o início de uma linha de texto
Em Python é a indentação (4 espaços, ou uma tabulação - tecla TAB) que diz quais as linhas pertencem ao if.
# Versão A: print dentro do if
if idade >= 18:
print("Podes votar.")
print("Fim.") # só corre se idade >= 18
# Versão B: print fora do if
if idade >= 18:
print("Podes votar.")
print("Fim.") # corre sempre
Desenvolve um programa que imprime no ecrã caso um número seja positivo.
Utiliza o código abaixo como ponto de partida, mas substituindo a CONDIÇÃO:
# Número positivo
n = int(input("Número: "))
if CONDIÇÃO:
print("O número é positivo.")
Desenvolve um programa que imprime no ecrã "Certo" caso a resposta à pergunta esteja correta.
Utiliza o código abaixo como ponto de partida, mas substituindo a CONDIÇÃO:
resposta = input("Qual é a capital de Portugal? ")
if CONDIÇÃO:
print("Certo!")
Desenvolve um programa que pergunta ao utilizador se está a chover e, se a resposta for "sim", imprimir no ecrã "Leva chapéu de chuva!".
A seleção composta tem dois caminhos: um bloco para quando a condição é verdadeira e outro para quando é falsa. Corre sempre um (e só um) dos dois.
Neste exemplo, com idade = 15 o programa não diz nada. Como dizer também "ainda não podes votar"?
idade = int(input("Idade: "))
if idade >= 18:
print("Podes votar.")
print("Fim do programa.")
Introduzimos a else:
idade = int(input("Idade: "))
if idade >= 18:
print("Podes votar.")
else:
print("Ainda não podes votar.")
print("Fim do programa.")
O que muda na sintaxe:
else: não tem condição. É "em todos os outros casos".
else fica alinhado com o if (mesma indentação), seguido de ":" .
O bloco do else também vai indentado.
Desenvolve um programa que pede um número e devolve se é par ou ímpar:
# Par ou ímpar
n = int(input("Número: "))
if CONDIÇÃO:
print("par")
else:
print("ímpar")
Desenvolve um programa que pede a nota d@ alun@ e devolve se este Aprovou ou Reprovou à disciplina.
O Parque de Diversões tem um bilhete de Entrada Jovem se a idade do cliente estiver entre 12 e 17 anos.
Desenvolve um programa que pede a idade do utilizador e devolve "Entrada Jovem" ou "Bilhete Geral", dependendo da idade.
Dica: Podes relacionar múltiplas condições utilizando os operadores and e or. (Exemplo: altura > 1.5 and altura < 2.0)
Imagina que o programa tem de classificar uma nota de 0 a 20 em quatro níveis: Insuficiente, Suficiente, Bom e Muito Bom. Com o que já sabes, a solução é pôr um if/else dentro de outro else:
nota = int(input("Nota (0-20): "))
if nota >= 18:
print("Muito Bom")
else:
if nota >= 14:
print("Bom")
else:
if nota >= 10:
print("Suficiente")
else:
print("Insuficiente")
Funciona, mas observa o código: cada nível novo empurra o seguinte mais uma indentação para a direita. Com 6 níveis seriam 6 degraus, e bastava um else mal alinhado para o programa deixar de funcionar.
O elif permite acrescentar tantas condições quantas precisares, todas ao mesmo nível.
nota = int(input("Nota (0-20): "))
if nota >= 18:
print("Muito Bom")
elif nota >= 14:
print("Bom")
elif nota >= 10:
print("Suficiente")
else:
print("Insuficiente")
Segue o programa com nota = 15:
Outro exemplo: o sinal de um número (aqui o else serve para o caso que sobra, o zero):
n = int(input("Número: "))
if n > 0:
print("Positivo")
elif n < 0:
print("Negativo")
else:
print("Zero")
Pede a temperatura em graus Celsius e escreve "Frio" (abaixo de 10), "Ameno" (abaixo de 20), "Quente" (abaixo de 30) ou "Muito quente" (30 ou mais).
Testa com 5, 10, 25 e 30.
Pede o número do mês e escreve quantos dias tem (considera que fevereiro tem 28). Fora de 1 a 12 escreve "Mês inválido".
Dica: não precisas de listar os meses de 31 dias, porque são os que sobram.
Testa com 0, 13, 4, 11, 2, 1, 8 e 12.
Pede dois números e uma operação (+, -, * ou /) e escreve o resultado.
Na divisão, se o segundo número for 0 escreve "Não se pode dividir por zero.".
Qualquer outra operação escreve "Operação inválida".
Testa com 6 e 3 em cada operação (9.0, 3.0, 18.0 e 2.0), com 6 e 0 na divisão e com a operação %.
Dois jogadores escrevem "pedra", "papel" ou "tesoura".
O programa diz "Empate", "Ganha o jogador 1" ou "Ganha o jogador 2".
Regras: A pedra ganha à tesoura, a tesoura ao papel e o papel à pedra.
Testa os três empates e as seis combinações diferentes.