- 青少年学Python(第2册)
- 冯伟森 王建
- 1397字
- 2025-02-25 17:11:17
第一单元 函数
第一节 蓝色小鱼函数——函数的定义和调用
周末,叮小马和朋友们一起去参观水族馆,看到了各种各样的鱼。参观结束后,水族馆还给每位游客发一张印有一条蓝色小鱼的纪念卡片。“一天的游客量这么大,水族馆该准备多少这样的小卡片啊!”叮小马正在感叹,一转眼看到水族馆工作室有一位工作人员正在一台打印机上打印小卡片,只要按一下打印机的开始按钮,打印机就自动打印纪念卡片,真方便!那Python里有没有这样的“自动机器”呢?叮小马想自己动手实现一个自动画小鱼的程序。

1.1 任务分解
本堂课需要实现一个画蓝色小鱼的“自动机器”,小鱼的样子参照下面的图形。

在实现这个画蓝色小鱼的“自动机器”之前,我们先分解一下任务,见下图。

1.2 程序实现
1.2.1 用turtle画小鱼
可以分成以下三步画出小鱼。
• 第一步:画鱼身

import turtle t = turtle.Turtle() turtle.colormode(255) t.fillcolor(100,149,237) t.begin_fill() t.left(30) for i in range(3): t.forward(100) t.right(120) t.end_fill()
• 第二步:画鱼尾

t.forward(100) t.right(120) t.forward(50) t.setheading(30) t.begin_fill() for i in range(3): t.forward(40) t.right(120) t.end_fill()
• 第三步:画鱼眼睛

t.setheading(-180) t.up() t.forward(65) t.down() t.begin_fill() t.circle(-3) t.fillcolor('black') t.end_fill() t.hideturtle()
1.2.2 封装成函数
通俗来讲,函数就是为一段实现特定功能的代码“取”一个名字,以后即可通过该名字来执行(调用)该函数。函数名就是给该函数取的名字。函数名最好能体现该函数要实现的功能,这样一看函数名就知道该函数是干什么的。
函数的定义语法如下:
def函数名(): 实现画蓝色小鱼的代码块
备注:
def是定义的意思,英文为define
封装画蓝色小鱼的代码:
def draw_fish(): t.begin_fill()#画鱼的身体 t.left(30) for i in range(3): t.forward(100) t.right(120) t.end_fill() t.forward(100)#画鱼的尾巴 t.right(120) t.forward(50) t.setheading(30) t.begin_fill() for i in range(3): t.forward(40) t.right(120) t.end_fill() t.setheading(-180)#画鱼的眼睛 t.up() t.forward(65) t.down() t.begin_fill() t.circle(-3) t.fillcolor('black') t.end_fill() t.hideturtle() t.setheading(0)#将海龟朝向设置成向右
特别注意:
◆ 函数名最好能体现该函数要实现的功能。
◆ 函数名由字母、数字、下画线组成。
◆ 函数名后必须要加英文括号和冒号。
◆ 函数体需要缩进。
1.2.3 调用函数
就像使用打印机需要按一下启动键一样,想要运行函数也需要启动一下函数,即调用函数。
下面在画布的四个角画四条小鱼。

Python代码示例:
#左上角 t.up() t.goto(-200,100) t.down() draw_fish()
#左下角 t.up() t.goto(-200,-100) t.down() draw_fish()
#右上角 t.up() t.goto(200,100) t.down() draw_fish()
#右下角 t.up() t.goto(200,-100) t.down() draw_fish()
调用函数语法:函数名()。函数名后一定要加括号。
1.3 拓展延伸
函数的执行顺序:
• 示例:
def draw_fish(): #画蓝色小鱼代码块 draw_fish()
定义函数只解决了函数存在的问题,调用函数才能让函数真正地发挥作用。
1.4 知识梳理
你学到了什么?
► 函数的作用
函数有什么用?试想一下这个场景:假设我们用Python编写了一段实现某特定功能的代码。问题来了,如果下次需要实现同样的功能,难道要把前面的代码再编写一次?这样做就太麻烦了,代码也重复。正确的做法是,把这段代码封装成函数,下次要使用,直接执行代码调用就可以了。
► 函数的定义
def函数名(): #实现某功能的代码块
► 函数的调用
函数的调用比较简单,函数名加英文括号就可以。
函数名()
1.5 课后习题
难度系数
(1)除法运算
请使用函数实现除法运算,要求如下。
a. 输入两个数a、b。
b. 定义函数division,将a除以b的结果计算出来。
c. 调用division函数,打印结果。
输入示例:
4
2
输出示例:
2.0
(2)计算球体积
定义函数实现:对于半径为r的球,其体积的计算公式为,这里取π=3.14。现给定r,即球半径,类型为float,求球的体积V(r为外部输入整数)。
输入示例:
2
输出示例:
球的体积为33.49333333333333
(3)判断星期
假如今天是星期天,那么从今日起第n天是星期几呢?(请先定义函数再调用函数解决此问题)
输入示例:
23
输出示例:
Tuesday
难度系数
(4)求和函数
定义函数实现算式1+2+3+4+…+100的和,并打印出结果。
编写一个函数,实现累计求和,要求如下。
a. 输入一个正整数n。
b. 定义一个函数fun,实现得到1~n的累加值(包含1和n)res。打印输出res。
c. 调用函数fun并得到结果。
输入示例:
50
输出示例:
1275