从字典取值替换计算公式以及if和or的组合

从字典取value,替换到计算公式,计算结果,误差控制,返回:

def add(dict_data: dict, formula):
    for i in dict_data.keys():
        if i in formula:
            formula = formula.strip().replace(i, dict_data[i])
    return eval(formula)


def result(dic:dict, formula, expect, deviation=0.3):
    expect_value = None
    if expect in '+' or '.' or '*' or '/':
        expect_value = add(dic, str(expect))
    else:
        expect = dic[expect] if str(expect).isalpha() is True else expect
        expect = eval(expect)
    expect = expect_value if expect_value is not None else expect
    actual = add(dic, formula)
    try:
        assert float(deviation) >= abs(actual-expect)
        print(f'expect:{expect},actual:{actual},controllable range:{deviation}')
        return True
    except AssertionError as error:
        print(f'raise AssertionError 异常 --> expect:{expect},actual:{actual}', error.__str__())
        return False


if __name__ == '__main__':
    dic = {'A': '500.0', 'B': '500.0', 'C': '5'}
    actual_result = 'A+B'
    status = result(dic, actual_result, '1000.11')
    # status = result(dic, actual_result, 'B')  # 输入单个字典值
    # status = result(dic, actual_result, 'B+C+A')  # 输入带字典的公式
    print(status)
    

Python中的if判断语句中包含or:

def add(expect):
    if expect == (1 or 5):
        print(expect)
if __name__ == '__main__':
    add(1)
输出:1

或者
def add(expect):
    if expect == 1 or expect == 5:
        print(expect)
if __name__ == '__main__':
    add(1)
输出:1

或者
def add(expect):
    if expect in '+' or '.' or '*' or '/':
        print('pass')
    else:
        print('Note')


if __name__ == '__main__':
    add('sd+sd*1')

输出:pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值