任意输入含加减乘除乘方开方的文本数学表达式,能检查语法错误,并计算结果
def check_math_expression(expression, check_syntax=True, print_result=True): import math import re if check_syntax: if not re.match(r'^[\+\-\*\/\(\)0-9\.\s]+$', expression): print('语法错误!') return False expression = expression.replace(' ', '') # 括号中的计算 while re.findall(r'\([^()]+\)', expression): expression = re.sub(r'\([^()]+\)', str(eval(re.findall(r'\([^()]+\)', expression)[0])), expression, count=1) # 乘方计算 while re.findall(r'\d+\^\d+', expression): expression = re.sub(r'\d+\^\d+', str(eval(re.findall(