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

  1. Lemos a nota como float.
  2. not (0 <= nota <= 10) usa uma comparação encadeada para detectar valores fora do intervalo.
  3. Cada elif usa comparações encadeadas para definir a faixa da nota.
  4. O else final cobre 0 <= nota < 3 (nota válida que não entrou nos casos anteriores).
  5. 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 <= 10 como 9 <= nota or nota <= 10: isso é sempre verdadeiro para qualquer nota.
  • Colocar if nota == 10 antes da classificação sem elif: 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 else final classificaria -1 como E.

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!