Desafio Python
Classificando notas com comparações encadeadas
Enunciado
Leia uma nota (float entre 0 e 10) e classifique-a usando comparações encadeadas: A para 9 <= nota <= 10, B para 7 <= nota < 9, C para 5 <= nota < 7, D para 3 <= nota < 5, E para 0 <= nota < 3. Notas fora do intervalo devem imprimir Nota inválida. Imprima também se a nota é exatamente 10 com a mensagem Nota máxima!.
Requisitos
- Usar pelo menos uma comparação encadeada (ex.:
9 <= nota <= 10). - Cobrir todos os intervalos e o caso de nota inválida.
- Imprimir a classificação e, se for 10, também
Nota máxima!.
Código inicial
nota = float(input("Nota: "))
# complete aqui
Saída esperada
Classificação: A
Nota máxima!
Ver dica
Comece verificando se a nota está fora do intervalo válido; depois use elif com comparações encadeadas.
Mostrar solução
nota = float(input("Nota: "))
if not (0 <= nota <= 10):
print("Nota inválida")
elif 9 <= nota <= 10:
print("Classificação: A")
elif 7 <= nota < 9:
print("Classificação: B")
elif 5 <= nota < 7:
print("Classificação: C")
elif 3 <= nota < 5:
print("Classificação: D")
else: # 0 <= nota < 3
print("Classificação: E")
if nota == 10:
print("Nota máxima!")
Passo a passo
- Lemos a nota como
float. not (0 <= nota <= 10)usa uma comparação encadeada para detectar valores fora do intervalo.- Cada
elifusa comparações encadeadas para definir a faixa da nota. - O
elsefinal cobre0 <= nota < 3(nota válida que não entrou nos casos anteriores). - Depois da classificação, verificamos separadamente se a nota é exatamente 10 e imprimimos
Nota máxima!.
Por que funciona
As comparações encadeadas avaliam a nota uma única vez e deixam a intenção clara: 9 <= nota <= 10 é lido como em matemática. A ordem dos elif garante que cada faixa seja testada corretamente, e a verificação de nota máxima é independente da classificação.
Erros comuns
- Escrever
9 <= nota <= 10como9 <= nota or nota <= 10: isso é sempre verdadeiro para qualquer nota. - Colocar
if nota == 10antes da classificação semelif: a classificação ainda seria impressa, mas a ordem pode confundir; o enunciado pede ambas as mensagens. - Esquecer de tratar notas fora do intervalo: o
elsefinal classificaria-1comoE.
Outra forma de resolver
Usar if/elif com limites apenas inferiores, já que a ordem cobre os superiores:
if nota < 0 or nota > 10:
print("Nota inválida")
elif nota >= 9:
print("Classificação: A")
elif nota >= 7:
print("Classificação: B")
# ...
Saída esperada
Classificação: A
Nota máxima!