Pensei nesse desafio meio que "de trás pra frente": primeiro entendi que só uma mensagem pode aparecer por vez, então precisava de um jeito do programa "escolher" entre as três opções sem checar todas daí usei condições encadeadas (o senão, se).
Algoritmo em linguagem natural
Pedir a média final do estudante.
Verificar se a média é menor que 5,0.
Se for, mostrar "Você está reprovado."
Se não caiu no caso acima, verificar se a média é menor que 7,0.
Se for, mostrar "Você está de recuperação."
Se não caiu em nenhum dos dois casos anteriores, é porque a média é 7,0 ou mais.
Mostrar "Parabéns! Você foi aprovado."
O que eu achei interessante é que não preciso testar "maior ou igual a 7" na última condição, se a média não é menor que 5 nem menor que 7, só sobra a opção de ser 7 pra cima. Isso deixa o código mais enxuto.
media_final = float(input("Digite a media final do estudante: "))
if media_final < 5.0:
print("Voce esta reprovado.")
elif media_final < 7.0:
print("Voce esta de recuperacao.")
else:
print("Parabens! Voce foi aprovado.")