通过实际的小项目,将前面学到的 Python 基础语法、流程控制、函数定义、异常处理等知识进行综合运用。本章以几个循序渐进的小项目为例,帮助读者在实践中理解编程逻辑,提高编程能力。
12.1 小项目 1:简单计算器
12.1.1 项目简介
本项目实现一个基于命令行的简单计算器,支持加、减、乘、除四种基本运算,输入两个数字和运算符,即可返回运算结果。
12.1.2 技术要点
- 使用 input() 函数获取用户输入;
- 使用 float() 类型转换处理小数运算;
- 使用 if-elif-else 结构判断运算类型;
- 使用函数封装操作;
- 使用异常处理捕获非法输入(如除以零或非法运算符);
12.1.3 功能需求
- 支持输入两个数和一个运算符(+ - * /);
- 显示计算结果;
- 输入非法时给出提示,并允许重新输入;
- 可以多次执行,直到用户选择退出。
12.1.4 代码示例
# 定义加法函数
def add(x, y):
return x + y
# 定义减法函数
def subtract(x, y):
return x - y
# 定义乘法函数
def multiply(x, y):
return x * y
# 定义除法函数,包含除数为 0 的判断
def divide(x, y):
if y == 0:
# 抛出异常,提示除数不能为0
raise ValueError("除数不能为0")
return x / y
# 定义主函数,封装整个计算器的运行逻辑
def calculator():
print("欢迎使用简单计算器")
while True: # 无限循环,直到用户选择退出
try:
# 获取用户输入的第一个数字,并转换为浮点数
num1 = float(input("请输入第一个数字:"))
# 获取运算符(+、-、*、/)
op = input("请输入运算符 (+ - * /):")
# 获取用户输入的第二个数字
num2 = float(input("请输入第二个数字:"))
# 根据用户输入的运算符调用对应的函数
if op == '+':
result = add(num1, num2)
elif op == '-':
result = subtract(num1, num2)
elif op == '*':
result = multiply(num1, num2)
elif op == '/':
result = divide(num1, num2)
else:
# 如果输入的运算符不合法,提示并跳过当前循环
print("无效的运算符,请重新输入。")
continue
# 打印计算结果,保留格式清晰
print(f"结果:{num1} {op} {num2} = {result}")
except ValueError as e:
# 捕获输入转换失败或除以零等异常,并输出错误信息
print("输入错误:", e)
continue # 出错后重新开始下一轮输入
# 提示用户是否继续
cont = input("是否继续计算?(y/n):").strip().lower()
if cont != 'y':
print("感谢使用,再见!")
break # 用户输入不是 'y',退出循环,结束程序
# 入口判断,只有直接运行时才执行 calculator()
if __name__ == "__main__":
calculator()
12.1.5 示例运行
欢迎使用简单计算器
请输入第一个数字:12
请输入运算符 (+ - * /):/
请输入第二个数字:3
结果:12.0 / 3.0 = 4.0
是否继续计算?(y/n):y
请输入第一个数字:7
请输入运算符 (+ - * /):%
无效的运算符,请重新输入。
请输入第一个数字:
...
12.1.6 项目拓展建议
- 增加对多次连续运算(表达式计算如 1 + 2 * 3)的支持;
- 提供图形化界面(如用 tkinter);
- 增加历史记录功能;
- 增加平方、开方、指数等扩展运算;
- 支持输入表达式字符串进行解析计算(可引入 eval(),但需注意安全性)。