Mind+Python turtle 课程——04 智能绘制的五角星
本帖最后由 木子呢 于 2021-9-29 15:33 编辑第四课 智能绘制的五角星
目录:
[*]Mind+Python turtle 课程-序章
[*]Mind+Python turtle 课程——01 海龟动起来
[*]Mind+Python turtle 课程——02 海龟画正方形
[*]Mind+Python turtle 课程——03 四色炫酷造型
功能介绍
经过前面课程的学习,我们对海龟绘图有了进一步的了解,知道了如何利用turtle库中很多函数的使用,也学会了从一个正方形到复杂图形的转变。这节课,我们将学习使用自己创建的函数来达到绘五角星的效果。首先,我们创建一个函数,函数内代码块的功能是画五角星的动作,之后,结合终端的界面交互功能进行手动设置画笔的颜色和填充的颜色,最后调用创建的函数来实现智能绘制五角星的效果。课程会分为两个任务的形式进行,下表为课程任务及涉及到的知识点。
实现功能知识点
任务一:绘制五角星函数的创建与调用
任务二:设定画线和填充颜色input()函数
项目实践
任务一:绘制五角星
1、任务分析
我们将创建一个新的函数,在函数内部,我们设定画线颜色和填充颜色及绘制五角星的功能,最后,我们调用创建好的这个函数画出五角星出来。下图为画五角星的过程。
2、编写程序
代码如下:
from turtle import*#导入turtle库def colorstar():#创建函数 begin_fill()#开始填充 for i in range(5):#循环5次 forward(120)#前进100像素 right(144)#右转144度 end_fill()#填充完毕colorstar()#调用函数done()#用来停止画笔绘制,但绘图窗体不关闭
3、运行效果
运行此段程序,可以看到小箭头跑出了一个完整的黑色五角星。在这里,我们没有编写调用海龟造型这个语句,所以默认显示的是箭头形状。
4、代码释义
4.1代码中from...import的使用
from turtle import *#导入turtle库
4.1.1代码解释from...import表示从某一库中导入部分工具。在这行代码中,*表示所有,即我们将turtle库中的所有工具都导入进来。
4.1.2使用方法
from...import 语句的语法格式如下:
from name import member
其中,name表示库名称,比如我们之前画图时用到的库,它的库名称就是turtle,而member表示要导入的变量或者函数等工具。在这里,我们可以同时导入多个变量或者函数等,每个之间使用逗号“,”分隔开来。例如,from turtle import forward,left表示导入turtle库的forward函数和left函数。而如果要导入全部的工具,我们可以使用星号“*”来表示。例如,from turtle import *,就表示导入turtle库内的全部工具。
4.1.3导入库的两种方式在此前,我们已经学习了通过“import+库名”的方式来一次性把库中的所有工具全部导入,例如“import turtle”就表示导入turtle库中的所有工具。这里是另一种方式,通过这种形式,我们在后续可以就直接使用库的函数了,而不必再按照之前的“库名.函数名”的格式了。譬如,用“import turtle”的形式导入库之后,我们要使用“turtle.forward(100)”这样的代码来表示前进100像素,而通过“from turtle import *”的形式导入库之后,我们使用“forward(100)”这句代码即可实现效果。
4.2函数的创建与调用
def colorstar():#创建函数
......colorstar()#调用函数
4.2.1代码解释def关键字先创建了一个colorstar()函数,用来存放画五角星的功能,后面需要时通过colorstar()这个形式调用它就可以实现画五角星的功能了。其中,关键字是python中已经被赋予特定意义的一些单词,比如import、def、from等。
4.2.2函数的使用对于函数,我们已经不陌生了,在前面我们已经学习过了range()函数,它是python语言自带的标准函数,也就是可以直接使用的函数。而除了可以直接使用的函数外,python还支持用户自己创建一个新的函数然后再调用。
4.2.3创建函数的方法创建函数也称为定义函数,我们可以理解为创建一种具有某种特定用途的工具。可以通过使用def关键字实现,具体的语法书写格式如下:
def functionname():
其中,“def”是英文“define”的缩写,表示创建和定义。“funtionname”是函数名称,在给函数命名时需注意函数名一律为小写英文而不能是中文,若有多个单词用下划线隔开。这里我们可以先给函数取个名字,然后通过这个名称来调用函数。“functionbody”表示函数语句块,在语句块内编写的是函数要实现的具体功能。而拥有相同缩进的程序,为一个语句块,所以在下面的程序中,函数语句块是从begin_fill()到end_fill()。
def colorstar():#创建函数 begin_fill()#开始填充 for i in range(5):#循环5次 forward(120)#前进100像素 right(144)#右转144度 end_fill()#填充完毕colorstar()#调用函数
4.2.4调用函数的方法调用函数很简单,我们通过“函数名()”的形式即可完成对函数的调用。调用函数就相当于把自己创建的函数内的程序都执行一遍,当我们需要重复使用某一段程序时,通过创建函数的方式,可以起到简化代码的作用。
4.3 turtle库begin_fill()与end_fill()函数的使用
begin_fill()#开始填充......
end_fill()#填充完毕
begin_fill()与end_fill()都是turtle库中的画笔控制命令,前者表示准备开始填充图形,后者表示填充完毕。
4.4turtle库done()函数的使用
done()#用来停止画笔绘制,但绘图窗体不关闭
在程序的最后,我们添加done()函数用来停止画笔绘制,但保留绘图窗体。在这里,我们使用done()函数而之前课程的exitonclick()函数,前者点击窗口关闭按钮才可退出程序的运行,后者只需在画布框内任意位置单机一下即可退出。
任务二:设定画线和填充颜色
1、任务分析
在任务一的程序中,我们通过函数的创建与调用实现了画五角星的效果。经过观察发现,我们的五角星的线条和填充颜色皆为黑色,那怎样才能随心所欲地给造型添加颜色呢?这里,我们通过input()输入函数在终端界面中来设定画线颜色和填充颜色,使图形更加漂亮。
2编写程序
代码如下:
from turtle import*#导入turtle库a = input("输入画线颜色(回车键确认): ")#输入画线颜色b = input("输入填充颜色(回车键确认): ")#输入填充颜色def colorstar(a,b):#创建函数 pencolor(a)#设定画笔颜色 fillcolor(b)#设定填充颜色 begin_fill()#开始填充 for i in range(5):#循环五次 forward(100)#前进100像素 right(144)#右转144度 end_fill()#结束填充colorstar(a,b)#调用函数done()#用来停止画笔绘制,但绘图窗体不关闭
3、运行效果
运行此段程序,可以看到终端中显示输入需求框,在这里,我们能按照自己的喜好进行画线颜色和填充颜色的设置。下图为我们输入的信息。
输入完成后按回车键即可,最终效果图如下:
4、代码释义
4.1input()输入函数的使用
a = input("输入画线颜色:")#输入画线颜色b = input("输入填充颜色:")#输入填充颜色
4.1.1代码解释在这里,我们创建两个变量a和b,分别用来存放在终端界面中输入的画线颜色和填充颜色。而我们函数中设计相关颜色的地方都用a和来表示,也达到了变量的一中功能,也就是只要更改变量初始值,那么程序内的内容也会相应的更改,达到一改全改的功能。
4.1.2input()函数的功能及用法
在Python中,使用自带的input()函数可以接收用户的键盘输入。input()函数的基本用法如下:variable = input(“提示文字”)其中,variable是保存输入结果的变量,双引号内的文字是给用户看的,用于提示要输入的内容的。例如,画圆时要提示用户设定圆的半径大小,可在双引号内写入“输入圆的半径”。
4.2带参数的函数的创建与调用
def colorstar(a,b):#创建函数......colorstar(a,b)#调用函数
在任务一中,我们已经了解了如何创建函数和调用函数,经过观察发现,之前创建和调用的函数,它的括号内是空的,而这里却有a,b两个变量。事实上,通过这种形式创建的函数我们称之为带参数的函数,而括号内为空的函数我们称之为不带参数的函数。在函数内部,我们可以将参数理解为变量,在需要时进行数据处理。
4.3turtle库pencolor()函数和fillcolor()函数的使用
pencolor(a)#设定画线颜色fillcolor(b)#设定填充颜色
pencolor()与fillcolor()都是turtle库的画笔控制命令,前者用来设定画线的颜色,后者用来设定图形的填充颜色。在这里,将用户输入的存储在变量a中的颜色设定为画线颜色,而在变量b中存放的颜色设定为图形的填充颜色。
项目小结
本节课我们通过在终端输入线条及填充的颜色,画出了五角星图案。通过这个项目,我们进一步熟悉了海龟绘图编程的工具,也学会了如何创建和调用函数。同时,我们也了解了在python中如何与终端进行交互。那么在这节课学习的基础上,结合今天画的五角星,我们还能绘制什么图形呢,赶紧动脑试试吧!
项目扩展
利用本节课学习的绘制五角星的方法,尝试画出一面国旗图案来吧,想一想绘制它需要哪些步骤呢。
参考程序
import turtle#中国国旗turtle.penup()#提笔turtle.goto(-200,200)#落到指定坐标位置turtle.pendown()#落笔turtle.begin_fill()turtle.fillcolor("red")turtle.pencolor("red")for i in range(2):#绘制长国旗边框轮廓 turtle.forward(438) turtle.right(90) turtle.forward(292) turtle.right(90)turtle.end_fill()turtle.penup()#绘制大的五角星turtle.goto(-170,145)turtle.pendown()turtle.begin_fill()turtle.fillcolor("yellow")turtle.pencolor("yellow")for x in range(5):#绘制五角星轮廓 turtle.forward(50) turtle.right(144)turtle.end_fill()#绘制第一颗小的五角星turtle.penup()turtle.goto(-100,180)turtle.setheading(305)turtle.pendown()turtle.begin_fill()turtle.fillcolor("yellow")turtle.pencolor("yellow")for x in range(5):#绘制五角星轮廓 turtle.forward(20) turtle.left(144)turtle.end_fill()#绘制第二颗小的五角星turtle.penup()turtle.goto(-85,150)turtle.setheading(30)turtle.pendown()turtle.begin_fill()turtle.fillcolor("yellow")turtle.pencolor("yellow")for x in range(5):#绘制五角星轮廓 turtle.forward(20) turtle.right(144)turtle.end_fill()#绘制第三颗小的五角星turtle.penup()turtle.goto(-85,120)turtle.setheading(5)turtle.pendown()turtle.begin_fill()turtle.fillcolor("yellow")turtle.pencolor("yellow")for x in range(5):#绘制五角星轮廓 turtle.forward(20) turtle.right(144)turtle.end_fill()#绘制第四颗小的五角星turtle.penup()turtle.goto(-100,100)turtle.setheading(300)turtle.pendown()turtle.begin_fill()turtle.fillcolor("yellow")turtle.pencolor("yellow")for x in range(5):#绘制五角星轮廓 turtle.forward(20) turtle.left(144)turtle.end_fill()turtle.hideturtle()#隐藏小海龟turtle.done()
参考效果
附件:
国旗,漂亮⛳️ 安卓机器人 发表于 2021-9-15 07:58
国旗,漂亮⛳️
{:5_131:} 帅气 太帅了!!!!!!
页:
[1]