一、课程介绍
本节课将学习函数参数,认识函数的形参与实参以及函数可以有多个参数的知识,最终实现绘制不同层数、颜色的蜘蛛网。
二、重难点解析
函数参数
函数括号里的内容,我们一般叫做参数。
def go(length):
p.forward(length)
比如在 go() 函数括号里的是参数 length。 参数是可以在函数里使用的,可以用 length 代替 forward() 方法里的距离数字。
在定义函数时,参数还没有被赋值,它还没有具体的数值。
直到我们调用函数时,写入一个具体的数值,比如 60。
# 调用函数:传递实参
go(60)
此时这个数值 60 就会传给 go() 函数的参数 length。
def go(length):
p.forward(length)
# 调用函数:传递实参
go(60)
运行后,函数里的 forward(length) 就是 forward(60)。 多次调用函数时,可以传入不同的参数。
# 调用函数:传递实参
go(60)
go(120)
形参与实参
函数后边括号里的内容都是参数,所以不只是length,调用函数时的 60、120 也都是参数。
def go(length):
p.forward(length)
# 调用函数:传递实参
go(60)
go(120)
只不过,定义函数时的 length 叫做形式参数,简称形参。 而调用函数时的参数是有具体的数值,例如 60、120,所以叫做实际参数。
多个参数
函数可以定义多个参数,只要参数间用英文逗号隔开就可以。
可以给每个参数赋予不同的作用,比如代表大小、代表颜色、代表角度等等,然后就根据作用在函数里面对应的位置使用这些形参。
def go(length, color):
p.pencolor(color)
p.forward(length)
定义的函数设置了多个形参,调用的时候也要传入相对应的实参。
注意,调用函数时,实参的“顺序”和“个数”,需要跟定义函数时的形参一样。否则,定义的函数就无法正确接收调用时传递的数据!
代码示例:
def go(length, color):
p.pencolor(color)
p.forward(length)
go(200, 'red')
三、单词卡
forest [ˈfɔːrɪst] 森林
spider [ˈspaɪdər] 蜘蛛
四、小试牛刀
4.1 源码操作
编写代码,实现一个函数 rectangle,可以任意画出不同大小和内部颜色的长方形,代码实现的效果可参考下图。
提示:
1、定义函数时,分别设置表示边长和颜色的参数;调用函数时,直接输入边长对应的数字和颜色对应的英文单词。
2、注意长方形中长和宽的边长不一样。
3、最终调用函数时,长方形边长和颜色可以自行选择。
import turtle
p = turtle.Pen()
def rectangle(length1, length2, color):
p.begin_fill()
p.fillcolor(color)
for i in range(2):
p.forward(length1)
p.left(90)
p.forward(length2)
p.left(90)
p.end_fill()
rectangle(200, 100,'red')
p.ht()
turtle.done()
4.2 源码操作
请用用 for 循环画出五角星,并把画五角星的代码包装成可以任意改变五角星大小的函数,然后结合函数、for循环、列表完成图1的最终效果。
提示:
1、画五角星的每一个角(共5个)需要先左转 72 度画线后再右转 144 度画线;
2、颜色列表可以自由选择数量和具体颜色,有多少个颜色就会叠加多少个五角星;
3、假设叠加 4 个五角星,画第一个五角星的起点坐标是 (0, 0),画第二个五角星的起点坐标是 (1, 1),画第三个五角星的起点坐标是 (2, 2),画第四个五角星的起点坐标是 (3, 3);
4、新的五角星会比上一个五角星的大小少 i*2。
import turtle
p = turtle.Pen()
# 绘制五角星
def star(length):
for i in range(5):
# 画出一个角
p.left(72)
p.forward(length)
p.right(144)
p.forward(length)
# 绘制多个彩色五角星
colors = ['red', 'yellow', 'purple', 'pink', 'green']
for i in range(len(colors)):
color = colors[i]
p.pensize(10)
p.pencolor(color)
p.penup()
p.goto(i, i) # 画笔向右上方移动
p.pendown()
star(100-i*2)
p.ht()
turtle.done()
五、扩展创作
import turtle
p = turtle.Pen()
turtle.bgpic('forest.gif')
p.speed(0)
turtle.addshape('spider.gif')
p.shape('spider.gif')
p.pencolor('white')
def web(length,color):
p.pencolor(color)
for i in range(6):
for i in range(3):
p.forward(length)
p.left(120)
p.left(60)
web(60,'red')
web(120,'yellow')
web(180,'orange')
web(240,'skyblue')
web(300,'pink')
turtle.done()
六、大开脑洞
2024独特定制窗花!
import turtle
turtle.bgpic('window.gif')
p = turtle.Pen()
p.pensize(5)
def a(length,color):
p.pencolor(color)
for i in range(3):
p.forward(length)
p.left(120)
def b(length,color):
p.pencolor(color)
for i in range(4):
p.forward(length)
p.left(90)
for i in range(4):
a(50,'red1')
a(100,'red2')
b(50,'red3')
b(100,'red3')
p.right(90)
turtle.done()