1. 为什么需要自己实现计算器?
在编程学习过程中,实现一个计算器几乎是每个Python初学者的必经之路。这不仅仅是因为计算器功能直观易懂,更重要的是它能帮助我们掌握编程中的多个核心概念。从变量定义、运算符使用,到函数封装和异常处理,一个完整的计算器项目几乎涵盖了基础语法的所有关键点。
我依然记得自己第一次用Python写计算器的经历。当时刚学完基础语法,觉得if-else和加减乘除都很简单,但真正动手把逻辑组合起来时,才发现需要考虑的边界情况如此之多。比如除数为零怎么处理?用户输入非数字怎么办?这些实际开发中必须面对的问题,在教程里往往一笔带过。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础版计算器实现
2.1 四则运算核心逻辑
我们先从最基础的四则运算开始。Python的运算符直接支持加减乘除,这为我们提供了极大便利。下面是一个最简单的实现方案:
python复制def basic_calculator():
num1 = float(input("请输入第一个数字: "))
operator = input("请输入运算符(+-*/): ")
num2 = float(input("请输入第二个数字: "))
if operator == '+':
result = num1 + num2
elif operator == '-':
result = num1 - num2
elif operator == '*':
result = num1 * num2
elif operator == '/':
result = num1 / num2
else:
result = "无效运算符"
print(f"结果: {result}")
这个版本虽然简单,但已经包含了计算器的核心逻辑。我们使用input()获取用户输入,通过if-elif判断运算符类型,最后用print()输出结果。注意我们将输入的数字转换为float类型,这样可以支持小数运算。
提示:在实际应用中,直接使用
input()获取用户输入存在安全隐患,特别是当代码需要处理敏感信息时。但在学习阶段,这种简单方式足够我们理解基本逻辑。
2.2 输入验证与异常处理
上面的基础版有个明显问题:当用户输入非数字或进行非法操作(如除零)时,程序会崩溃。让我们加入异常处理来增强健壮性:
python复制def safe_calculator():
try:
num1 = float(input("请输入第一个数字: "))
operator = input("请输入运算符(+-*/): ")
num2 = float(input("请输入第二个数字: "))
if operator not in ['+', '-', '*', '/']:
raise ValueError("无效运算符")
if operator == '/' and num2 == 0:
raise ZeroDivisionError("除数不能为零")
if operator == '+':
result = num1 + num2
elif operator == '-':
result = num1 - num2
elif operator == '*':
result = num1 * num2
elif operator == '/':
result = num1 / num2
print(f"结果: {result}")
except ValueError as e:
print(f"输入错误: {e}")
except ZeroDivisionError as e:
print(f"计算错误: {e}")
这个改进版使用了try-except块来捕获可能的异常。我们特别处理了两种常见错误:无效运算符和除零操作。ValueError会在输入无法转换为数字时自动触发,我们也主动用它来处理无效运算符。
3. 进阶功能实现
3.1 支持连续运算
基础版每次只能执行一次运算,这显然不够实用。让我们扩展功能,支持连续运算直到用户选择退出:
python复制def continuous_calculator():
while True:
try:
num1 = float(input("请输入数字(输入q退出): "))
if num1 == 'q':
break
while True:
operator = input("请输入运算符(+-*/=): ")
if operator == '=':
print(f"最终结果: {num1}")
b
