from time import sleep
from machine import Pin
def keypad_init():
    R1 = Pin(18, Pin.OUT)
    R2 = Pin(19, Pin.OUT)
    R3 = Pin(20, Pin.OUT)
    R4 = Pin(21, Pin.OUT)
    C1 = Pin(10, Pin.IN, Pin.PULL_DOWN)
    C2 = Pin(11, Pin.IN, Pin.PULL_DOWN)
    C3 = Pin(12, Pin.IN, Pin.PULL_DOWN)
    C4 = Pin(13, Pin.IN, Pin.PULL_DOWN)
    expression = ""
    input_done = False
    delay_ms = 250
    while True:
        R1.on()
        R2.off()
        R3.off()
        R4.off()
        if C1.value() == 1:
            expression = expression + "1"
            sleep(delay_ms/1000)
        if C2.value() == 1:
            expression = expression + "2"
            sleep(delay_ms/1000)
        if C3.value() == 1:
            expression = expression + "3"
            sleep(delay_ms/1000)
        if C4.value() == 1:
            expression = expression + "+"
            sleep(delay_ms/1000)
        R1.off()
        R2.on()
        R3.off()
        R4.off()
        if C1.value() == 1:
            expression = expression + "4"
            sleep(delay_ms/1000)
        if C2.value() == 1:
            expression = expression + "5"
            sleep(delay_ms/1000)
        if C3.value() == 1:
            expression = expression + "6"
            sleep(delay_ms/1000)
        if C4.value() == 1:
            expression = expression + "-"
            sleep(delay_ms/1000)
        R1.off()
        R2.off()
        R3.on()
        R4.off()
        if C1.value() == 1:
            expression = expression + "7"
            sleep(delay_ms/1000)
        if C2.value() == 1:
            expression = expression + "8"
            sleep(delay_ms/1000)
        if C3.value() == 1:
            expression = expression + "9"
            sleep(delay_ms/1000)
        if C4.value() == 1:
            expression = expression + "*"
            sleep(delay_ms/1000)
        R1.off()
        R2.off()
        R3.off()
        R4.on()
        if C1.value() == 1:
            input_done = True
            sleep(delay_ms/1000)
        if C2.value() == 1:
            expression = expression + "0"
            sleep(delay_ms/1000)
        if C3.value() == 1:
            input_done = True
            sleep(delay_ms/1000)
        if C4.value() == 1:
            expression = expression + "/"
            sleep(delay_ms/1000)
        if input_done == True:
            print(expression)
            
            for character in expression:
                if character == '+' or character == '-' or character == '*' or character == '/':
                    operation = character
            
            expression = expression.split(operation)
            if operation == '+':
                result = int(expression[0]) + int(expression[1])
            elif operation == '-':
                result = int(expression[0]) - int(expression[1])
            elif operation == '*':
                result = int(expression[0]) * int(expression[1])
            else:
                result = int(expression[0]) / int(expression[1])
            expression = operation.join(expression)
            # 123+456 = '+'.join(['123', '456'])
            print(expression, '=', result)
            input_done = False
keypad_init()