怎么用Python编写一个简单的计算器程序
编写一个简单的Python计算器,核心任务是利用函数封装加、减、乘、除基础运算,通过命令行输入接收用户的操作指令和数字,完成计算后输出结果,并通过循环让程序能够连续使用。本文将一步步拆解各组成部分,提供包含异常处理在内的完整可用代码,帮助读者快速掌握编写逻辑。
一、设计核心运算函数
编写程序的第一步是确立功能边界。一个基础计算器至少需要支持四项算术运算:加法(+)、减法(-)、乘法(*)和除法(/)。在Python中,推荐将每一种算术操作分别定义为独立的函数。这种模块化写法不仅逻辑分明,也有利于后续维护与单元测试。
def add(x, y):
"""加法运算"""
return x + y
def subtract(x, y):
"""减法运算"""
return x - y
def multiply(x, y):
"""乘法运算"""
return x * y
def divide(x, y):
"""除法运算,包含除数为零检查"""
if y == 0:
raise ZeroDivisionError("除数不能为0")
return x / y
需要特别注意除法函数 divide。在数学运算中,零不能作为除数。如果在执行浮点除法时传入 0,Python 运行时会抛出 ZeroDivisionError。在此处主动做条件检测或抛出明确错误,能够避免程序因为未经处理的异常直接崩溃。
二、构建控制台交互与输入转换
有了运算函数后,程序需要与运行者进行交互。交互逻辑由三个部分组成:展示功能选项、获取用户输入、根据选项调用对应的函数。
1. 输出菜单指令
为避免用户困惑,程序应在启动时打印清晰的操作提示,例如编号 1 代表加法、2 代表减法等。
2. 输入获取与数值转换
Python 原生内置的 input() 函数返回的内容统一为字符串类型(str)。如果直接将字符串相加,例如 "3" + "5",得到的结果是拼接字符串 "35" 而非数值 8。因此必须将其转换为数值。为了兼容整数与带小数的运算,使用 float() 函数进行转换最为通用:
num1 = float(input("请输入第一个数字: "))
num2 = float(input("请输入第二个数字: "))
三、防御式编程:加入异常与错误处理
在实际操作中,用户可能会输入非法字符(例如把数字误输入为字母),或者在除法时输入除数为 0。如果不加防范,Python 会直接报出未捕获异常并强行退出。为了保证程序的稳定性,需要使用 try...except 语法块进行保护。
四、完整可执行代码
将上述各个模块组装起来,便得到完整的可执行脚本。程序使用 while True 构建主循环,每次运算完毕后询问用户是否退出。读者可以在本地创建名为 calculator.py 的文件,并将以下代码完整复制进去运行:
# calculator.py
def add(x, y):
"""加法"""
return x + y
def subtract(x, y):
"""减法"""
return x - y
def multiply(x, y):
"""乘法"""
return x * y
def divide(x, y):
"""除法"""
if y == 0:
raise ZeroDivisionError("除数不能为零")
return x / y
def main():
print("=" * 36)
print(" 欢迎使用简单Python计算器")
print("=" * 36)
print("可选择的操作:")
print("1. 加法 (+)")
print("2. 减法 (-)")
print("3. 乘法 (*)")
print("4. 除法 (/)")
print("=" * 36)
while True:
choice = input("请选择运算编号 (1/2/3/4) 或输入 q 退出: ").strip()
if choice.lower() == 'q':
print("感谢使用,程序已退出。")
break
if choice not in ('1', '2', '3', '4'):
print("错误:无效的操作选项,请输入 1、2、3、4 或 q。\n")
continue
try:
num1 = float(input("请输入第一个数字: "))
num2 = float(input("请输入第二个数字: "))
except ValueError:
print("错误:输入的不是有效数字,请重新输入。\n")
continue
try:
if choice == '1':
result = add(num1, num2)
symbol = '+'
elif choice == '2':
result = subtract(num1, num2)
symbol = '-'
elif choice == '3':
result = multiply(num1, num2)
symbol = '*'
elif choice == '4':
result = divide(num1, num2)
symbol = '/'
# 打印运算表达式与结果
print(f"计算结果: {num1} {symbol} {num2} = {result}\n")
except ZeroDivisionError as err:
print(f"计算错误: {err},无法计算。\n")
# 询问是否继续下一轮运算
next_calc = input("是否继续进行下一次计算?(y/n): ").strip().lower()
if next_calc == 'n':
print("程序已结束。")
break
print("-" * 36)
if __name__ == '__main__':
main()
五、运行与执行结果验证
打开终端或命令行界面,切换到脚本保存的目录,输入以下命令执行:
python calculator.py
控制台将输出菜单并等待用户键入,以下为一次典型的交互示例输出:
====================================
欢迎使用简单Python计算器
====================================
可选择的操作:
1. 加法 (+)
2. 减法 (-)
3. 乘法 (*)
4. 除法 (/)
====================================
请选择运算编号 (1/2/3/4) 或输入 q 退出: 1
请输入第一个数字: 12.5
请输入第二个数字: 7.5
计算结果: 12.5 + 7.5 = 20.0
是否继续进行下一次计算?(y/n): y
------------------------------------
请选择运算编号 (1/2/3/4) 或输入 q 退出: 4
请输入第一个数字: 9
请输入第二个数字: 0
计算错误: 除数不能为零,无法计算。
是否继续进行下一次计算?(y/n): n
程序已结束。
格式化输出建议:如果在运算时希望整数结果不显示末尾的 .0(例如输出 20 而非 20.0),可以使用 result.is_integer() 判断,并在为真时用 int(result) 进行格式化。
六、关键知识点总结
编写一个基础计算器涵盖了初学者必须掌握的几项核心编程概念:
- 函数封装:使用
def语句把独立的功能抽离,保证代码复用与职责单一。 - 控制流循环:使用
while True搭配break与continue实现连续对话式交互。 - 分支判断:使用
if-elif-else针对不同操作指令进行逻辑派发。 - 异常捕获:使用
try...except拦截ValueError与ZeroDivisionError,增强程序的鲁棒性。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









