Resolvi testar colocando 21h e deu erro:
Pensando nisso, já que o usuário pode aplicar de diversar formas eu mudei o código para atender os dois formatos
21h
21

Resolvi testar colocando 21h e deu erro:
Pensando nisso, já que o usuário pode aplicar de diversar formas eu mudei o código para atender os dois formatos
21h
21
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:
ValueErrorNa 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.
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!
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:
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!