第十一课:代码的“积木块” – 函数 (定义和调用)

  • 时长: 90 分钟
  • 教学目标:
    • 理解“函数”的概念:把一段常用的代码打包起来,起个名字,方便重复使用。
    • 知道为什么我们需要使用函数(提高代码复用性、可读性、管理性)。
    • 学习定义(创建)一个简单的函数,使用 def 关键字。
    • 理解函数名称的命名规则。
    • 掌握如何调用(使用)已经定义好的函数。
    • 理解函数体(函数内部的代码块)需要缩进。
    • 初步感知函数定义的代码在被调用之前不会执行。

课程内容

1. 复习与引入 (10 分钟)

  • 复习: 快速回顾列表的进阶操作,以及使用循环和条件判断解决问题的方法。
  • 提出问题: 老师提问:“假设我们需要在程序里多次完成同一个任务,比如:打印一句欢迎语,或者计算一个数字的平方并打印。每次都要写一遍同样的代码,是不是很麻烦?如果这段代码很长,或者以后想修改这段代码,是不是要改很多地方?”
  • 引出函数: 就像玩积木一样,我们可以把一段常用的代码“打包”成一个有名字的“积木块”。需要用的时候,直接喊这个积木块的名字就行了,不用每次都重新搭一遍。这个“积木块”在编程里就叫做函数 (Function)

2. 什么是函数?为什么用函数? (15 分钟)

  • 概念: 函数就是一段完成特定任务的代码块,我们给它起个名字。
  • 打个比方: 函数就像家里的电灯开关。你想开灯,不需要知道电灯是怎么工作的,只需要按一下开关(调用函数)就行了。或者像烤箱的“烤面包”按钮,按下去它就会自动完成一系列步骤。
  • 为什么用函数?
    • 省事 (代码复用): 只需要写一次函数,就可以在程序里多次调用它。
    • 清晰 (提高可读性): 给一段代码起个有意义的名字(函数名),别人一看就知道这段代码是做什么的。
    • 方便修改 (易于管理): 如果需要修改某个任务的代码,只需要修改函数定义的地方,所有调用这个函数的地方都会生效。
    • 分工 (模块化): 把大问题分解成小任务,每个任务写一个函数,让程序结构更清晰。

3. 创造你的“积木块” – 定义函数 (20 分钟)

  • 语法: 使用 def 关键字来定义一个函数,后面跟着函数名、一对括号 () 和一个冒号 :。函数名后面的缩进代码块就是函数体。
    # 定义一个简单的函数,名字叫做 say_hello
    def say_hello():
        # 函数体:需要缩进的代码
        print("你好!")
        print("很高兴见到你!")
    
    # 定义另一个函数,名字叫做 print_stars
    def print_stars():
        print("*" * 20)
    
    # 定义函数就像造积木,只是把代码包起来,这时候里面的代码还不会执行
    
  • 函数命名规则: 函数名和变量名类似,可以使用字母、数字、下划线,不能以数字开头,不能用关键字。通常建议函数名用小写字母,多个单词用下划线分隔(例如 calculate_sum)。函数名应该能反映函数的功能。
  • 重要概念: 定义函数只是告诉 Python “有这么一个功能,它叫做 say_hello,按下它会做这些事”。定义函数本身并不会让函数体内的代码立即执行。

4. 使用你的“积木块” – 调用函数 (15 分钟)

  • 语法: 要让函数体内的代码执行,我们需要调用它。调用函数的方法是写函数名,后面加一对括号 ()
    # 调用上面定义的 say_hello 函数
    say_hello() # 这时候,say_hello 函数体里的代码才会执行
    
    print("--- 分隔线 ---")
    
    # 再次调用 say_hello 函数
    say_hello() # 函数体里的代码会再次执行
    
    # 调用 print_stars 函数
    print_stars()
    
  • 演示: 老师演示定义一个函数,然后多次调用它,让学生观察函数体内的代码重复执行的效果。
    # 定义一个函数,计算并打印 1 到 5 的和
    def calculate_sum_1_to_5():
        total = 0
        for i in range(1, 6):
            total = total + i
        print("1 到 5 的和是:", total)
    
    # 调用函数
    calculate_sum_1_to_5() # 第一次计算并打印和
    
    # 再调用一次
    calculate_sum_1_to_5() # 第二次计算并打印和
    
  • 动手实践: 学生编写代码,定义一个打印自己名字的函数,然后调用它三次。 定义一个打印一行分隔符的函数,然后在程序的不同位置调用它。

5. 课堂练习 (15 分钟)

让学生独立完成以下练习:

  • 练习 1: 定义一个函数 print_greeting(),让它打印一句简单的问候语,比如“欢迎学习 Python!” 然后调用这个函数。
    # 在这里定义你的函数
    def print_greeting():
        # TODO: 在函数体里写打印问候语的代码
        pass # 先用 pass 占位,防止语法错误
    
    # 在这里调用你的函数
    
  • 练习 2: 定义一个函数 print_square(),让它打印一个由 * 组成的 3×3 的正方形。(提示:可以使用循环)。然后在程序中调用这个函数两次。
    # 在这里定义你的函数 print_square()
    def print_square():
        # TODO: 使用循环打印 3x3 的正方形
        pass
    
    # 在这里调用你的函数
    
  • 练习 3: 定义一个函数 my_info(),让它打印你的名字和年龄(直接在函数体里写死信息即可)。然后在程序中调用这个函数。

6. 总结与提问 (10 分钟)

  • 回顾: 回顾本节课内容:函数的作用(打包代码、复用),定义函数的语法 def 函数名(): 和缩进的函数体,调用函数的方法 函数名(),以及函数定义和调用是两个不同的步骤,定义时代码不执行,调用时才执行。
  • 提问:
    • 函数是用来做什么的?
    • 定义函数用哪个关键字?后面需要加什么?
    • 如何让一个函数里的代码执行?
    • 定义函数的时候,函数体里的代码会立即执行吗?
    • 为什么要使用函数?(至少说出一点好处)
  • 答疑: 回答学生问题。

7. 布置课后作业 (5 分钟)

  • 作业 1: 编写一个程序,定义一个函数 print_line(),让它打印一行由等号 = 组成的分隔线(比如 30 个等号)。然后在程序的不同地方多次调用这个函数,把输出内容分隔开。
  • 作业 2: 编写一个程序,定义一个函数 print_triangle(),让它打印一个由 * 组成的 4 行的直角三角形。(提示:可以在函数体里使用嵌套循环)。然后在程序中调用这个函数。
  • 作业 3: 编写一个程序,定义一个函数 motivational_quote(),让它打印一句鼓励的话,比如“坚持就是胜利!”。然后在一个 for 循环里调用这个函数 5 次。
  • 作业 4: (选做) 编写一个程序,定义一个函数 calculate_circle_area(),让它计算并打印半径为 5 的圆的面积(圆周率取 3.14)。(面积公式:π * 半径 * 半径)。然后在程序中调用这个函数。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。