Olá, Ionara! Tudo bem?
Sua maneira de pensar a lógica está certinha! Você definiu muito bem as condições: verificar se é menor que 12, se está entre 12 e 18, ou se é maior que isso. É exatamente esse o caminho dos blocos condicionais (if, elif, else).
Sobre a sua dúvida de "esconder" o (0-23): o texto que aparece na tela é exatamente o texto que você coloca dentro do comando de entrada (o input). Se você quer que fique visualmente mais "limpo", basta mudar a frase dentro dos parênteses.
Vou deixar aqui um exemplo transformando seu raciocínio em código Python e limpando a mensagem de pergunta:
# Solicitando a hora com uma mensagem mais limpa
# O int() serve para transformar o que a pessoa digita em número inteiro
hora = int(input("Que horas são? "))
if 0 <= hora < 12:
print("Bom dia")
elif 12 <= hora < 18:
print("Boa tarde")
else:
print("Boa noite")
Perceba que no input eu deixei apenas "Que horas são? ". A validação (garantir que seja entre 0 e 23) geralmente fazemos via lógica de código, e não necessariamente avisando no texto, se você preferir um visual mais clean.
Bons estudos!
Sucesso ✨