逻辑计算

题目描述:

常用的逻辑计算有And(表示为&);Or(表示为|);Not(表示为!)。其中,他们的优先级关系是Not(!)>And(&)>Or(|)。

输入描述:

1、测试用例中间无空格,无需考虑空格。

2、测试用例表达式只会出现如下字符:“0”,“1”,“(”,“)”,“&”,“|”,“!”。

3、测试用例所给的输入都是合法输入,无需要考虑非法输入。

4、测试用例长度不会超过128个字符。

5、括号可以重复嵌套。

例如:

1 | ( 1 & 0 )                       返回值:1

1 & 0 | 0 & 1                     返回值:0

! 0 & 1 | 0                          返回值:1

( ( ! 0 & 1 ) ) | 0                 返回值:1

输出描述:

输出逻辑运算后的最终结果:0或者1

示例1:
输入:! ( 1 & 0 ) | 0 & 1

输出:1

示例2:
输入:! ( 1 & 0 ) & 0 | 0

输出:0

 

def fun(str):
    k = 0
    while len(str) != 1:
        str = str.replace('!1', '0')
        str = str.replace('!0', '1')

        str = str.replace('1&0', '0')
        str = str.replace('0&1', '0')
        str = str.replace('1&1', '1')
        str = str.replace('0&0', '0')

        str = str.replace('1|1', '1')
        str = str.replace('0|1', '1')
        str = str.replace('1|0', '1')
        str = str.replace('0|0', '0')

        str = str.replace('(1)', '1')
        str = str.replace('(0)', '0')
        k += 1
        if k > 20:
            break
    return str

string = input()
print(fun(string))