def pega_int(pergunta: str, opcoes: list[int] = []) -> int:
"""
Solicita uma entrada do usuário, garantindo que seja um número inteiro
e, opcionalmente, que esteja dentro de uma lista de opções válidas.
Args:
pergunta: A mensagem (prompt) a ser exibida ao usuário.
opcoes: Uma lista de inteiros válidos. Se a lista estiver vazia
(padrão), qualquer inteiro é aceito.
Returns:
O número inteiro digitado pelo usuário.
Raises:
ValueError: Se a entrada não puder ser convertida para int.
ValueError: Se o inteiro digitado não estiver na lista de opções válidas.
"""
resposta: int = 0
try:
resposta = int(input(pergunta))
except ValueError:
raise ValueError('Entrada inválida!')
if opcoes == []:
return resposta
if resposta in opcoes:
return resposta
raise ValueError('Opção inválida!')
def e_par(numero: int) -> bool:
"""
Verifica se um número inteiro é par.
A verificação é feita através do operador módulo (%), checando se o
resto da divisão do número por 2 é igual a zero.
Args:
numero: O número inteiro a ser verificado.
Returns:
True: Se o número for par.
False: Se o número for ímpar.
"""
if numero % 2 == 0:
return True
return False
def main() -> None:
"""
Função principal que solicita um número inteiro ao usuário e verifica
se ele é par ou ímpar.
A função utiliza a função `pega_int` para garantir que a entrada seja
um número inteiro válido antes de realizar a verificação.
"""
numero: int = 0
while True:
try:
numero = pega_int('\nDigite um número inteiro: ')
break
except ValueError as e:
print(e)
if e_par(numero):
print('O número é par!')
else:
print('O número é impar!')
if __name__ == '__main__':
main()