Olá, Vitor, como vai?
A lógica utilizada na função está coerente com a proposta da atividade e as condições para os intervalos de horário foram bem definidas. O ponto principal a ajustar é o uso do return junto com o print, já que o print apenas exibe o texto e não deve ser retornado pela função. Nesse caso, a função pode apenas imprimir a mensagem ou então retornar a string para ser exibida fora dela.
Um exemplo de ajuste ficaria assim:
def saudacao(hora):
if hora >= 0 and hora < 12:
print("Bom dia")
elif hora >= 12 and hora < 18:
print("Boa tarde")
elif hora >= 18 and hora <= 23:
print("Boa noite")
hora_atual = int(input("Digite a hora atual (0-23): "))
saudacao(hora_atual)
O fórum fica à disposição para dúvidas ou para compartilhar outras soluções. Continue participando e trazendo seus exercícios para discussão.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!