自定义函数

1.什么是函数?

  • 如上图,我们通常将脏衣服放在洗衣机当中,经过洗衣机的清洗之后,就变成了干净的衣服,我们不需要知道在洗衣机内部是怎么去洗衣服的,我们只需要将衣服放入洗衣机当中,得当干净衣服就可以了
  • 函数,就类似于洗衣机,我们只需要它实现函数里面的功能,而我们却是不需要知道里面的功能是如何。
  • 因此我们将函数看成一个功能的集合体,当我们需要使用函数的时候,直接进行调用就可以了

2.如何定义函数??

def fuction_name():
    pass
  • def为函数定义的关键字
  • fuction_name为函数名称
  • 用缩进表示函数体中的代码

利用函数绘制正方形

import turtle

pen=turtle.Pen()

#定义绘制正方形的函数
def square():
    for i in range(4):
        pen.forward(100)
        pen.left(90)

#调用函数
square()

#移动画笔
pen.penup()
pen.goto(200,0)
pen.pendown()

#调用函数
square()

#绘制完毕
turtle.done()

运行结果

3.带参数的函数

如果我们想要画出长度可变的正方形,应该怎么做?

#定义带参数绘制正方形的函数
def square(length):
    for i in range(4):
        pen.forward(length)
        pen.left(90)
  • length代表参数
  • 第一行的length代表使用参数
  • 完全代码如下:
import turtle

pen=turtle.Pen()

#定义带参数绘制正方形的函数
def square(length):
    for i in range(4):
        pen.forward(length)
        pen.left(90)

#调用函数
square(50)

#移动画笔
pen.penup()
pen.goto(100,0)
pen.pendown()

#调用函数
square(100)

#移动画笔
pen.penup()
pen.goto(300,0)
pen.pendown()

#调用函数
square(150)

#绘制完毕
turtle.done()

运行结果如下:

移动画笔的代码有些多余,如何解决这个问题?

  • 在下面这个代码中,我们很明显可以看到有代码冗余,比如移动画笔的函数
import turtle

pen=turtle.Pen()

#定义带参数绘制正方形的函数
def square(length):
    for i in range(4):
        pen.forward(length)
        pen.left(90)

#调用函数
square(50)

#移动画笔
pen.penup()
pen.goto(100,0)
pen.pendown()

#调用函数
square(100)

#移动画笔
pen.penup()
pen.goto(300,0)
pen.pendown()

#调用函数
square(150)

#绘制完毕
turtle.done()
  • 改进如下:
import turtle

pen=turtle.Pen()

def square(length):        #定义带参数绘制正方形的函数
    for i in range(4):
        pen.forward(length)
        pen.left(90)

def moveTo():            #定义一个移动画笔的函数
    pen.penup()
    pen.goto(100,0)
    pen.pendown()

#调用函数
square(50)

#移动画笔
moveTo()

#调用函数
square(100)

#移动画笔
moveTo()

#调用函数
square(150)

#绘制完毕
turtle.done()

运行结果:

  • 我们可以看到,还有些许问题,后面两个正方形没有分开,因此我们可以为与移动函数添加参数来解决,代码如下:
import turtle

pen=turtle.Pen()

def square(length):        #定义带参数绘制正方形的函数
    for i in range(4):
        pen.forward(length)
        pen.left(90)

def moveTo(x,y):            #定义一个移动画笔的函数
    pen.penup()
    pen.goto(x,y)
    pen.pendown()

#调用函数
square(50)

#移动画笔
moveTo(100,0)

#调用函数
square(100)

#移动画笔
moveTo(300,0)

#调用函数
square(150)

#绘制完毕
turtle.done()

运行结果:

4.综合练习

  • 完善 moveto()函数,使其在接受一个参数后可以自由控制是否需要在移动时留下痕迹
  • 画出万花筒使用海龟库,结合函数绘制出万花筒的图样。以下图案仅作为示例
最后修改:2020 年 09 月 05 日
如果觉得我的文章对你有用,请随意赞赏