从字典取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