华为2020机试逻辑题
  sN8ixrMHcia0 2023年12月22日 38 0


逻辑计算

题目描述:

常用的逻辑计算有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))

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   80   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   65   0   0 Python
  Ugrw6b9GgRUv   2024年05月17日   38   0   0 Python
sN8ixrMHcia0