1
resposta

Faça como eu fiz: saudação personalizada

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Resolvi testar colocando 21h e deu erro:
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Pensando nisso, já que o usuário pode aplicar de diversar formas eu mudei o código para atender os dois formatos

  • 21h
    Insira aqui a descrição dessa imagem para ajudar na acessibilidade

  • 21
    Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Estudante. Como vai?

Sua linha de raciocínio foi fantástica! Esse é o verdadeiro espírito de quem desenvolve software: testar o código com entradas diferentes, antecipar as falhas antes do usuário final encontrar e buscar uma solução para tornar o sistema mais robusto.

Analisando as capturas de tela do seu processo de descoberta, destaco o aprendizado técnico riquíssimo que você teve com essa atividade:

1. Entendendo o ValueError

Na terceira imagem, quando você digitou "21h", o Python disparou o erro:
ValueError: invalid literal for int() with base 10: '21h'

Isso acontece porque a função int() só sabe converter strings que contenham puramente números digitados (como "21"). Quando o caractere textual "h" entrou junto, o interpretador do Python não soube o que fazer matematicamente e travou a execução para proteger o sistema.

2. A Solução com replace() (Excelente escolha!)

Para resolver isso, você aplicou uma estratégia cirúrgica nas primeiras imagens:

hora = int(hora.replace("h", ""))

O método .replace("h", "") limpa a string antes da conversão. Se o usuário digitar "21h", o Python troca o "h" por nada, transformando em "21", e o int() funciona perfeitamente. Se o usuário digitar apenas "21", o método procura pelo "h", não encontra nada para substituir, mantém a string como "21" e a conversão também funciona sem erros!

Uma sugestão para os próximos testes (Garantia de segurança)

Sua solução cobriu com maestria os formatos "21" e "21h". Para deixar o seu código ainda mais indestrutível contra qualquer forma de digitação, vale a pena pensar em outros dois cenários comuns:

  • E se o usuário digitar o "H" maiúsculo (ex: 21H)?
  • E se o usuário colocar espaços (ex: 21 h)?

Uma boa prática para blindar de vez essa entrada de dados é combinar o .replace() com os métodos .lower() (que transforma tudo em minúsculo) e .strip() (que remove espaços extras nas pontas):

# Transforma em minúsculo, remove o h, limpa espaços e converte
hora = int(hora.lower().replace("h", "").strip())

Tratar as inconsistências dos dados que entram no sistema é uma das tarefas mais importantes do dia a dia da programação. Você resolveu o problema de forma muito inteligente e elegante. Parabéns!

Espero que possa ter lhe ajudado!