Olá, Willy! Como vai?
O seu código está perfeito e a lógica para calcular e exibir a média com uma casa decimal ({media:.1f}) está corretíssima!
Se você tentou rodar esse código exatamente do jeito que postou aqui no fórum e ele deu erro (provavelmente não imprimindo a média e travando o programa), o motivo é uma "pegadinha" clássica e exclusiva do Python: a indentação (os espaços no começo da linha).
O que está acontecendo? (O Bug dos Espaços)
Ao contrário de outras linguagens que usam chaves {} para saber o que está dentro de uma condição, o Python usa o alinhamento de espaços. Sempre que você usa um if, elif ou else, a linha de baixo precisa obrigatoriamente ter um recuo (geralmente 4 espaços ou 1 clique na tecla Tab).
Se o seu código estiver colado na parede esquerda assim:
if media < 5:
print ('Reprovado') # ERRO AQUI!
O Python se perde, estoura um erro chamado IndentationError e interrompe a execução do script antes mesmo de conseguir processar o seu comando print da média.
O Código Corrigido e Pronto para Rodar
Ajustando o alinhamento dos blocos, o seu programa fica assim:
nota_1 = float(input('Digite a primeira nota: '))
nota_2 = float(input('Digite a segunda nota: '))
nota_3 = float(input('Digite a terceira nota: '))
media = (nota_1 + nota_2 + nota_3) / 3
# Exibe a média perfeitamente
print(f'Média: {media:.1f}')
# CORREÇÃO: Repare nos 4 espaços de recuo antes de cada print condicional
if media < 5:
print('Reprovado')
elif 5 <= media < 7:
print('Recuperação')
else:
print('Aprovado')
Por que a sua lógica ficou excelente?
Gostaria de te dar os parabéns pela linha do elif:
elif 5 <= media < 7:
Em muitas linguagens, você seria obrigado a escrever elif media >= 5 and media < 7. O Python aceita essa escrita simplificada e acorrentada (chamada de operadores encadeados), que deixa o código muito mais limpo, elegante e gostoso de ler.
Ajuste esses espacinhos no seu editor (VS Code, Colab ou PyCharm) e veja a mágica acontecer!
Espero que possa ter lhe ajudado!