华为2020届校园招聘上机笔试题(第三题)——逻辑运算计算器(Python实现)

本文介绍了如何用Python实现逻辑运算计算器,重点在于处理逻辑运算符的优先级,包括!(非)、|(或)、&(与)。通过将中缀表达式转化为后缀表达式,并对后缀表达式进行计算,解决含括号的逻辑运算问题。
摘要由CSDN通过智能技术生成

题意大概为:

实现逻辑运算计算器功能,逻辑运算符: !(非)、|(或)、&(与),其优先级为 !>&>|。

case中只会出现“0”、“1”、“(”、“)”、“!”、“&”、“|”,且无空格

这题的思路和四则运算计算器差不多,使用栈先将中缀表达式转化为后缀表达式,之后再对后缀表达式进行计算。只不过四则运算加上括号有三个运算优先级,而逻辑运算计算器加上括号则有四个优先级。所以再入栈弹栈时要注意优先级

def postfix_calcution(expression):
    """
    计算后缀表达式
    :param expression: 后缀表达式
    :return: 计算结果
    """
    stack = []
    for i in expression:
        if i.isnumeric():
            stack.append(int(i))  # 若为数字,则存入栈中
        else:
            if i == '&':  # 若为“&”操作符,从栈中弹出两个数字进行与运算,并将结果保存在在栈中
                a = stack.pop()
                b = stack.pop()
                result = a & b
            elif i == '|':  # 若为“|”操作符,从栈中弹出两个数字进行或运算,并将结果保存在在栈中
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值