在日常的开发工作中,不可避免地需要用到计算器的功能。今天,我们就来介绍如何用Python实现一个简单的计算器。 首先,我们需要明确计算器的功能需求:实现基本的加减乘除运算。那么,我们就可以开始编写程序了。 步骤1:获取用户输入 我们可以使用Python内置的input函数来获取用户输入的表达式,代码如下所示: ``` expr = input("请输入表达式:") ``` 步骤2:解析表达式 我们需要将用户输入的表达式解析成可计算的形式。这里,我们可以使用Python内置的eval函数来实现表达式的计算。但是,eval函数存在一定的安全性问题,因此我们要注意对输入的表达式进行过滤,避免恶意代码的注入。例如,我们可以使用Python内置的re模块对输入的表达式进行正则匹配,只允许数字和加减乘除符号出现,其他字符一律剔除。代码如下所示: ``` import re expr = input("请输入表达式:") pattern = re.compile(r"[^0-9+\-*/.]") expr = pattern.sub("", expr) result = eval(expr) print("计算结果为:", result) ``` 步骤3:异常处理 当我们输入不合法的表达式时,程序会出现异常,例如除数为0等。这时,我们需要进行异常处理。例如,当出现异常时,我们可以输出错误信息,然后提示用户重新输入。代码如下所示: ``` import re while True: try: expr = input("请输入表达式:") pattern = re.compile(r"[^0-9+\-*/.]") expr = pattern.sub("", expr) result = eval(expr) print("计算结果为:", result) except Exception as e: print("发生错误:", e) print("请重新输入") ``` 步骤4:优化代码 上面的代码已经可以实现基本的计算器功能了,但是还存在一些问题。例如,当用户输入的表达式中存在多个连续的加减乘除符号时,程序就会出现错误。为了解决这个问题,我们可以使用正则表达式对连续的符号进行合并,将其转化为单一的符号。代码如下所示: ``` import re while True: try: expr = input("请输入表达式:") pattern = re.compile(r"[^0-9+\-*/.]") expr = pattern.sub("", expr) expr = re.sub(r"([\+\-\*/])\1+", r"\1", expr) result = eval(expr) print("计算结果为:", result) except Exception as e: print("发生错误:", e) print("请重新输入") ``` 此时,我们已经完成了一个简单的计算器的编写。上述代码基于Python内置的eval函数,可以实现基本的加减乘除运算,但是对于复杂的表达式,可能无法得到正确的计算结果。如果需要处理复杂的表达式,我们可以借助第三方的数学库,例如SymPy、NumPy等。