怎么用Python编写一个简单的计算器程序

今天早睡
今天早睡
发布时间:2026-10-26| 6人浏览过
原创

编写一个简单的Python计算器,核心任务是利用函数封装加、减、乘、除基础运算,通过命令行输入接收用户的操作指令和数字,完成计算后输出结果,并通过循环让程序能够连续使用。本文将一步步拆解各组成部分,提供包含异常处理在内的完整可用代码,帮助读者快速掌握编写逻辑。

怎么用Python编写一个简单的计算器程序
图1:控制台计算器程序的运行生命周期与执行流

一、设计核心运算函数

编写程序的第一步是确立功能边界。一个基础计算器至少需要支持四项算术运算:加法(+)、减法(-)、乘法(*)和除法(/)。在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。在此处主动做条件检测或抛出明确错误,能够避免程序因为未经处理的异常直接崩溃。

怎么用Python编写一个简单的计算器程序
图2:输入调度层与独立运算函数的模块分工

二、构建控制台交互与输入转换

有了运算函数后,程序需要与运行者进行交互。交互逻辑由三个部分组成:展示功能选项、获取用户输入、根据选项调用对应的函数。

1. 输出菜单指令

为避免用户困惑,程序应在启动时打印清晰的操作提示,例如编号 1 代表加法、2 代表减法等。

2. 输入获取与数值转换

Python 原生内置的 input() 函数返回的内容统一为字符串类型(str)。如果直接将字符串相加,例如 "3" + "5",得到的结果是拼接字符串 "35" 而非数值 8。因此必须将其转换为数值。为了兼容整数与带小数的运算,使用 float() 函数进行转换最为通用:

num1 = float(input("请输入第一个数字: "))
num2 = float(input("请输入第二个数字: "))

三、防御式编程:加入异常与错误处理

在实际操作中,用户可能会输入非法字符(例如把数字误输入为字母),或者在除法时输入除数为 0。如果不加防范,Python 会直接报出未捕获异常并强行退出。为了保证程序的稳定性,需要使用 try...except 语法块进行保护。

怎么用Python编写一个简单的计算器程序
图3:程序对非数值输入与除零异常的分支拦截图

四、完整可执行代码

将上述各个模块组装起来,便得到完整的可执行脚本。程序使用 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,增强程序的鲁棒性。
怎么用Python编写一个简单的计算器程序
图4:构建简单计算器所需的四大核心技术模块体系

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。