1
resposta

[Dúvida] Resolução e dúvida sobre essa questão

Tecnicamente, tá meio que faltando algumas informações nessa questão, já que "antes das 12h" e "após às 18h" é meio vago sobre onde um começa e outro termina, então pra esse caso fiz o seguinte:

  • "dia" - 0h até ás 11h
  • "tarde" - 12h até às 17h
  • "noite" - 18h até às 23h

Nesse contexto, coloquei todas as informações dentro da função mesmo:

def greeter():
    time = int(input("Insira o horário atual (0-24): "))
    if (time >= 0) & (time < 12):
        print("Bom dia!")
    elif (time >= 12) & (time < 18):
        print("Boa tarde!")
    elif (time >= 18) & (time < 23):
        print("Boa noite!")
    else:
        print("Tem um erro no processo. Tente novamente.")
        
greeter()
1 resposta

Oi, Estudante. Como vai?

Gostei dos intervalos definidos e da função dedicada. O problema aqui é o uso de & no lugar de and, o que muda a lógica, e o limite 23 ficou de fora por causa de < 23; além disso, 24 não está no domínio válido. Com base no que você explicou, uma forma segura é validar a entrada e separar I/O da lógica:

Uma dica interessante para o futuro é usar and com limites inclusivos/exclusivos e também in range, que deixa os intervalos claros. Veja este exemplo:


def saudacao(hora: int) -> str:
    if 0 <= hora < 12:
        return "Bom dia."
    elif 12 <= hora < 18:
        return "Boa tarde."
    elif 18 <= hora <= 23:
        return "Boa noite."
    return "Hora invalida."

try:
    hora = int(input("Insira o horario atual (0-23): "))
    print(saudacao(hora))
except ValueError:
    print("Entrada invalida.")

Tambem da para usar in range para pertencer a intervalos:


def saudacao_range(h):
    if h in range(0, 12):
        return "Bom dia."
    elif h in range(12, 18):
        return "Boa tarde."
    elif h in range(18, 24):  # inclui 23
        return "Boa noite."
    return "Hora invalida."

Esses códigos validam a entrada e retornam a saudação correta, mantendo a lógica clara.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!