from math import log

def soma(x,y):
    return x+y

def menos(x,y):
    return x-y

operações = {
    '+':    soma,
    '-':    menos,
    '*':    (lambda x,y: x*y),
    '/':    (lambda x,y: x/y),
    '//':   (lambda x,y: x//y),
    '%':    (lambda x,y: x%y),
    '**':   (lambda x,y: x**y),
    'raiz': (lambda x,y: x**(1/y)),
    'log':  log,
}

def recebe_número(prompt):
    while True:
        candidato = input(prompt)
        if candidato.isdigit():
            return int(candidato)
        if candidato.lower() == 'x':
            return 'x'
        print("Só aceito números inteiros não negativos ou x!")

def main():
    inicio = True
    print("Calculadora Simples")
    while True:
        print()
        print("Digite x a qualquer momento para sair")
        if inicio:
            inicio = False
            esquerda = recebe_número("Qual o primeiro número (inteiro não negativo)?\n")
            if esquerda == 'x':
                return
        else:
            esquerda = resultado
        direita  = recebe_número("Qual o segundo número (inteiro não negativo)?\n")
        if direita == 'x':
            return
        while True:
            operação = input(f"Qual operação? Possibilidades: {' '.join(operações.keys())}\n")
            if operação in operações:
                operação_a_fazer = operações[operação]
                resultado = operação_a_fazer(esquerda, direita)
                print(f"Resultado: {resultado}")
                break
            if operação.lower() == 'x':
                return
            print("Não sei fazer isso!")
            
if __name__ == '__main__':
    main()
    
