简单计算器(Python)
简单约 20 分钟
你将构建什么
一个命令行计算器:用户输入两个数字和运算符(+、-、*、/),程序计算并输出结果。支持连续多次计算,处理除零错误和无效运算符。
学习目标
- 用函数封装四则运算逻辑
- 用 if/elif/else 选择运算
- 用 try/except 处理除零和输入错误
- 用循环支持连续多次计算
前置要求
- 了解 Python 函数和条件判断
- 了解 try/except 异常处理
- 已完成前两个 Python 项目或具备同等基础
步骤
- 1
定义运算函数
为加减乘除各定义一个函数。除法函数特殊处理:除数为 0 时抛出 ValueError 或返回错误提示。
代码def add(a, b): return a + b def subtract(a, b): return a - b def multiply(a, b): return a * b def divide(a, b): if b == 0: raise ValueError("除数不能为 0") return a / b预期结果
四个函数定义完成,分别调用可得到运算结果。
提示
raise 抛出异常让调用方决定如何处理,比直接返回字符串更灵活。
- 2
读取用户输入
用 input 读取两个数字和一个运算符。数字用 float() 转换,运算符保持字符串。
代码a = float(input("请输入第一个数字:")) operator = input("请输入运算符 (+ - * /):") b = float(input("请输入第二个数字:"))预期结果
程序读取三个输入并转换为对应类型。
提示
用 float 而非 int,这样能处理小数运算。
- 3
根据运算符调用对应函数
用 if/elif 判断运算符,调用对应函数。无效运算符给出错误提示。用 try/except 捕获除零错误。
代码try: if operator == '+': result = add(a, b) elif operator == '-': result = subtract(a, b) elif operator == '*': result = multiply(a, b) elif operator == '/': result = divide(a, b) else: print(f"错误:不支持的运算符 {operator}") exit() print(f"结果是:{result}") except ValueError as e: print(f"错误:{e}")预期结果
输入 5、+、3 输出 8;输入 10、/、0 输出除零错误。
提示
也可以用字典把运算符映射到函数,代码更简洁:ops = {'+': add, ...}。
- 4
用循环支持连续计算
把整个计算流程包进 while True 循环,每次计算后询问是否继续。输入 q 退出。
代码while True: try: # ... 读取输入并计算 ... print(f"结果是:{result}") except ValueError as e: print(f"错误:{e}") again = input("是否继续计算?(按 q 退出,其他键继续):") if again.lower() == 'q': print("感谢使用,再见!") break预期结果
计算器可以反复使用,输入 q 退出。
提示
while True + break 是 Python 常用的循环模式,比 while condition 更灵活。
自己动手试试
起始代码
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
# TODO: 处理除零错误
pass
# TODO: 读取输入、调用函数、循环计算解决方案代码
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
raise ValueError("除数不能为 0")
return a / b
while True:
try:
a = float(input("请输入第一个数字:"))
operator = input("请输入运算符 (+ - * /):")
b = float(input("请输入第二个数字:"))
if operator == '+':
result = add(a, b)
elif operator == '-':
result = subtract(a, b)
elif operator == '*':
result = multiply(a, b)
elif operator == '/':
result = divide(a, b)
else:
print(f"错误:不支持的运算符 {operator}")
continue
print(f"结果是:{result}")
except ValueError as e:
print(f"错误:{e}")
again = input("是否继续计算?(按 q 退出,其他键继续):")
if again.lower() == 'q':
print("感谢使用,再见!")
break你学到了什么
你用 Python 实现了一个实用的计算器,综合运用了函数、条件判断、异常处理和循环——这些都是编写健壮 Python 程序的必备技能。
相关资源
相关术语
新手友好的术语表用大白话解释编程术语——变量、函数、DOM、Promise 等等。
相关错误
用大白话解释常见错误——什么意思、为什么发生、如何修复。