内容正文:
2.4 可以复用的代码
第二单元 编程计算
泸科版高中《信息技术》 制作人:陆兴涛(博雅高级中学)
学习目标
理解“自顶向下、逐步细化”的编程思想;
学会将复杂问题分解为可管理的子问题;
掌握用函数模块化实现各子功能;
提高程序设计的逻辑性与可维护性;
通过具体案例实践Python编程中的问题分解与实现。
情景引入
简易计算器的实现
print("简易计算器")
print("1. 加法 (+)")
print("2. 减法 (-)")
print("3. 乘法 (*)")
print("4. 除法 (/)")
num1 = float(input("请输入第一个数:"))
num2 = float(input("请输入第二个数:"))
op = input("请输入操作符 (+, -, *, /):")
if op == '+':
num=num1 + num2
elif op == '-':
num=num1 - num2
elif op == '*':
num=num1 * num2
elif op == '/':
if num2 != 0:
num=num1 / num2
else:
print( "错误:除数不能为零")
else:
print("无效操作符")
print(num)
思考:
是否可以将大问题拆成小任务?
每个小任务是否更容易实现?
“自顶向下、逐步细化”
任务一 用自定义函数实现简易计算器
1. 什么是“自顶向下、逐步细化”?
自顶向下:从整体出发,先设计高层结构,再逐步深入细节;
逐步细化:将每个模块不断分解,直到每一步都可具体实现。
2. 编程中的体现:
主程序→ 功能模块 → 函数 → 具体语句
3. 一般步骤
明确问题需求;
分解为若干子问题;
设计函数接口(名称、参数、返回值);
逐步实现每个函数;
组合调用,完成整体功能。
函 数
函数的定义格式
def 函数名( 参 数 ):
语句或语句组 return 返回值
def:用于声明创建一个函数
return:用于返回函数的值,可以不写或发回空值(return 0)
参数:是外部数据进入函数内部的入口,可以为空(viod)
函数的封装
print("简易计算器")
print("1. 加法 (+)")
print("2. 减法 (-)")
print("3. 乘法 (*)")
print("4. 除法 (/)")
函数的封装是指将一段实现特定功能的代码逻辑组织成一个独立的函数单元,对外只提供简单的调用接口,隐藏内部实现细节。
def show_menu():
print("简易计算器")
print("1. 加法 (+)")
print("2. 减法 (-)")
print("3. 乘法 (*)")
print("4. 除法 (/)")
show_menu()
①
函数的封装
def get_input():
num1 = float(input("请输入第一个数:"))
num2 = float(input("请输入第二个数:"))
op = input("请输入操作符 (+, -, *, /):")
return num1, num2, op
②
num1 = float(input("请输入第一个数:"))
num2 = float(input("请输入第二个数:"))
op = input("请输入操作符 (+, -, *, /):")
请封装下列程序:
函数的封装
def calculate(num1, num2, op):
if op == '+':
return num1 + num2
elif op == '-':
return num1 - num2
elif op == '*':
return num1 * num2
elif op == '/':
if num2 != 0:
return num1 / num2
else:
return "错误:除数不能为零"
else:
return "无效操作符"
③
if op == '+':
num=num1 + num2
elif op == '-':
num=num1 - num2
elif op == '*':
num=num1 * num2
elif op == '/':
if num2 != 0:
num=num1 / num2
else:
print( "错误:除数不能为零")
else:
print("无效操作符")
请封装下列程序:
主函数
主函数是程序的“大脑”,负责:
● 接收输入
● 调用其他功能函数
● 控制程序执行顺序
● 输出结果
它体现了“自顶向下、逐步细化”的设计思想——把大问题分解为小函数,再由main()统一调度。
def main():
show_menu()
num1, num2, op = get_input()
result = calculate(num1,num2,op)
print("结果:",result)
④
任务二 实现简易计算器的代码共享
发布代码的准备
在D:\创建一个文件夹mymodule,其中包含mymodule.py和setup.py两个文件。
mymodule.py是一个模块文件,其内容就是简易计算器的封装代码。
setup.py文件包含有关发布的元数据,代码如书上所示。
发布代码
导入模块并使用
在D:\创建一个test.py文件。
在文件中引入库(import mymodule)
调用库中的函数(mymodule.function_name)
当堂总结
当堂练习
1. 在编程中,复用代码的主要好处是( )
A. 增加代码量
B. 提高程序执行速度
C. 减少代码冗余
D. 增加程序复杂性
【答案】C
2. 下列哪个选项是Python中定义函数的基本结构?( )
A. function my_function:
B. def my_function():
C. my_function = function()
D. create_function my_function
【答案】B
3. 以下哪个选项是Python中实现代码复用的错误方式?( )
A. 使用函数
B. 复制粘贴代码
C. 使用类
D. 使用模块
【答案】B
4. 在编程中,封装的概念主要用于( )
A. 隐藏实现细节
B. 显示所有细节
C. 增加代码的可读性
D. 减少代码的执行效率
【答案】A
5. 以下哪个Python代码片段正确地展示了如何使用默认参数?( )
A. def func(a, b=5): return a + b
B. def func(a, b): return a + b
C. def func(a=5, b): return a + b
D. def func(b, a): return a + b
【答案】A
拓展练习
1.请编写程序,实现输入一个人的出生年份(≥1900),输出他的生肖,直到输入0结束,运行结果如图2.4.5所示。
2.Python中提供了大量标准模块,亦称标准库。请同学们进行尝试。
利用time模块可以获取计算机的时钟信息,包括日期和时间,也可以利用它进行延时。
利用random模块可以生成随机数。
谢谢观看
高中信息技术《数据与计算》科教版 制作人:陆兴涛
$