def solicitar_primeiro_numero() -> int:
return validar_numeros_digitados('Digite o primeiro número: ')
def solicitar_segundo_numero() -> int:
return validar_numeros_digitados('Digite o segundo número: ')
def validar_numeros_digitados(mensagem: str) -> int:
while True:
entrada = input(mensagem)
try:
valor = int(entrada)
if valor < 0:
raise ValueError('O valor não pode ser negativo. Tente novamente')
return valor
except ValueError:
print('Valor inválido. Digite apenas um número inteiro (EX: 5)')
def escolher_operador():
operador = input('Escolha a operação (| + | - | * | / |): ')
if operador == '+':
return lambda x, y: x + y
elif operador == '-':
return lambda x, y: x - y
elif operador == '*':
return lambda x, y: x * y
elif operador == '/':
return lambda x, y: x / y if y != 0 else 'Erro: divisão por zero'
else:
print('Operador inválido. Tente novamente.')
return escolher_operador()
def continuar_programa() -> bool:
while True:
resposta = input('Deseja fazer outra operação? (s/n): ').strip().lower()
if resposta in ('s', 'n'):
return resposta == 's'
print('Resposta inválida, digite "s" para sim ou "n" para não.')
def main():
while True:
numero1 = solicitar_primeiro_numero()
numero2 = solicitar_segundo_numero()
operacao = escolher_operador()
resultado = operacao(numero1, numero2)
print(f'Resultado: {resultado}')
if not continuar_programa():
print('Programa encerrado!')
break
if __name__ == '__main__':
main()