回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

Pyhton编程入门系列课程——01 智能绘星 简单

头像 木子呢 2021.04.15 412 0

一、学习背景
Python是一种跨平台、开源的高级编程语言,它语法简单,功能强大,深受编程爱好者推崇。因此,本套教程主要以python纯软件的编程为主,而在本单元中,我们借助海龟绘图的turtle库,结合python的基础语法进行学习。下面,让我们来开启python之旅的第一节课吧。

project-image

二、学习目标

本实践项目通过编写python程序来绘制星星并随心所欲地为其添加颜色。

知识目标:
1、了解python语言及海龟绘图
2、理解python中的库、注释、变量、函数、顺序结构和range()函数
3、了解python中的for循环、sleep()函数、以及赋值运算符“=”
4、掌握input()输入函数和print()输出函数的使用

技能目标:
1、掌握使用turtle库中的函数绘制五角星的方法
2、掌握使用turtle库中的函数为图形填充颜色的方法

三、学习准备
1、电脑
2、mind+编程软件
在游览器中输入以下网址,进入下载页面,点击立即下载则会跳转至Mind+客户端下载页面,选择适合自己电脑系统的版本下载即可。

下载地址:http://mindplus.cc/

project-image

四、学习实践

在本项目中,我们将创建三个层层递进,由浅入深的python程序,并在最终实现智能绘星的效果。
1.召唤一个小海龟并使其移动一段距离后左转。
2.绘制一个空心的五角星。
3.为五角星填色并使颜色变化。

任务1:召唤小海龟程序设计
在这第一个程序中,我们将召唤一个小海龟并使其移动一段距离后左转,通过它,我们可以了解turtle绘图的基本方式,为此,我们将分三步创建第一个程序。首先是分析任务,之后进行程序的编写,最后运行程序并观察效果。

1、任务分析
使用turtle库时,我们的画笔能在画布上往任意方向移动,这也是海龟绘图的原理——移动画图,利用画笔移动的路径来绘制图形。在这个任务中,我们首先需要将小海龟显示出来,之后控制小海龟在画布上移动一段距离并左转,最后结束绘图。这里我们将采用顺序结构的方式编写程序。具体流程如下:

project-image
project-image
project-image

2、程序编写
在正式编写程序代码之前,我们首先要创建一个项目文件及python程序文件。

STEP1:创建与保存项目文件

(1) 启动Mind+软件,点击右上角的“python模式”,

project-image

(2) 点击左上角“代码”选择编程方式,

project-image

之后我们会看到下面这样的屏幕,右侧是文件目录区,左侧分别是代码编写区和终端区。

project-image

(3) 创建完成后,点击左上方项目菜单中的“另存项目”,

project-image

(4) 在弹出的界面中选择桌面或其他位置以保存文件,输入文件名“智能绘星”,保存类型“mind+”,

project-image

经过上述四步,我们就成功创建并保存好项目文件啦,但是我们的项目是使用python语言来实现的,因此,接下来我们还需要在项目文件中再创建python程序文件。

STEP2:创建与保存python文件

(1) 点击“文件系统”,

project-image

之后会显示出文件目录,也就是python程序文件所保存的区域,

project-image

(2) 点击“项目中的文件”栏中的加号,

project-image

之后,会弹出一个空白输入框,

project-image

(3) 在弹出的输入框中写入“任务一.py”并回车确认,效果如下

project-image

这样我们就成功创建一个名为“任务一.py”的python程序文件了,这里需要注意的是python程序文件一定要以“.py”格式结尾才能进行编程,否则无法打开。

创建完成后,我们双击“任务一.py”文件即可对该文件在程序编写区内进行编程,图示如下。对于后续的其他任务,我们可通过同样的方式创建相应的python文件并编写程序。

project-image

STEP3:编写程序

代码
import turtle #导入海龟绘图库
turtle.shape("turtle")#外形显示海龟
turtle.forward(100)#向前移动距离100像素
turtle.left(90)#向左旋转90度
turtle.done()#结束绘图但不关闭窗口复制代码

3、程序运行
STEP1:点击右上方的运行按钮

project-image

STEP2:观察效果

我们发现在软件中弹出一个小窗口,一只黑色的小海龟显示在窗口的正中间,之后小海龟向前跑了一段距离(100像素),并向左旋转了90度。

project-image
project-image
project-image
project-image
project-image

任务2:绘制五角星程序设计
在这个程序中,我们将绘制一个空心的五角星,通过它,我们能掌握绘制五角星的多种编程方式。为此,我们将分四步创建程序。首先是分析任务,之后进行程序的编写,接着运行程序并观察效果,最后优化程序。

1、任务分析
经过上述内容的学习,我们对小海龟的移动指令已经有所了解了,那么该如何使用上述的方法来编程绘制五角星呢?绘制的时候,需要前进和转弯多少次,每次转弯的角度又该多大呢?

在这个任务中,为了能使最后画出的五角星处于中间区域,我们需要先将小海龟移动到中间偏左的坐标位,作为开始绘图的初始位置。具体步骤如下,

project-image

整体上我们依旧将采用顺序结构的方式编写程序。具体流程如下,

project-image

2、程序编写

STEP1:创建与保存项目文件

之前我们已经新建并保存过了项目文件,这里我们只需再建立一个新的名为“任务二.py”的python程序文件即可,具体操作方法如上。创建完成后,我们双击打开它进行编程。

STEP2:编写程序

代码
import turtle#导入海龟库
turtle.shape("turtle")#显示乌龟形状
turtle.penup()#抬笔,画笔移动时不绘制图形
turtle.goto(-50,0)#移动到(-50,0)坐标位
turtle.pendown()#落笔,画笔移动时绘制图形
turtle.speed(1)#设置画笔速度
#绘制过程
turtle.forward(120)#前进120像素
turtle.right(144)#右转144度
turtle.forward(120)
turtle.right(144)
turtle.forward(120)
turtle.right(144)
turtle.forward(120)
turtle.right(144)
turtle.forward(120)
turtle.right(144)
turtle.hideturtle()#隐藏海龟画笔
turtle.done()#停止画笔绘制,但绘图窗体不关闭复制代码

3、程序运行
运行程序,我们看到画布上:小海龟一开始先出现在原点,之后向前移动120像素后右转144度,并重复了五次,最后隐身不见,留下一个空心的五角星。

project-image

4、程序优化
俗话说,一千个观众就有一千个哈姆雷特,我们每个人编写程序的方式也可能不一样。事实上,绘制五角星有多种方式,在这里,小海龟“前进120像素后右转144度”这两步核心操作我们重复编写了五次,那我们有什么方式来简化代码,同样的效果吗?继续往下看吧!

STEP1:优化程序

代码
import turtle#导入海龟库
turtle.shape("turtle")#显示海龟形状
turtle.penup()#抬笔,画笔移动时不绘制图形
turtle.goto(-50,0)#移动到(-50,0)坐标位
turtle.pendown()#落笔,画笔移动时绘制图形
turtle.speed(1)#设置画笔移动速度
#绘制过程
for i in range(5):#循环五次
    turtle.forward(120)#前进120像素
    turtle.right(144)#右转144度
turtle.hideturtle()#隐藏海龟画笔
turtle.done()#停止画笔绘制,但绘图窗体不关闭复制代码
project-image
project-image

任务3:智能绘星程序设计

在这个程序中,我们将为五角星填色并使颜色变化,通过它,我们可以掌握与终端交互绘制五角星的方式。为此,我们将分五步创建这个程序。首先是分析任务,之后进行填充颜色的程序编写,接下来运行程序并观察效果,然后优化程序实现通过终端交互的方式设定五角星的颜色,最后运行程序观察效果。

1、任务分析
在这个任务中,我们首先需要在程序中为五角星填充颜色,之后优化程序实现在终端中输入颜色继而自动绘制五角星的效果。

事实上在填充颜色程序中,相较于之前绘制的空心的五角星,这里我们只需添加填充颜色的操作即可,步骤如下图,

project-image

这里,整体上我们依旧将采用顺序结构的方式编写程序。具体流程如下左图,

在优化程序时,我们只需在一开始导入库后先在终端中输入画笔颜色和填充颜色并存储在变量中,之后在填充时将颜色统统用变量来替代就可以啦。具体流程如下右图,

project-image
project-image

2、程序编写
STEP1:创建与保存python文件

同上,我们在项目文件中再创建一个python程序文件“任务三.py”进行编程。

STEP2:编写程序

代码
import turtle#导入海龟库
turtle.shape("turtle")#显示乌龟形状
turtle.penup()#抬笔,画笔移动时不绘制图形
turtle.goto(-50,0)#移动到(-50,0)坐标位
turtle.pendown()#落笔,画笔移动时绘制图形
turtle.speed(1)#设置画笔速度
turtle.begin_fill()#开始填充
turtle.pencolor('red')#设置画笔颜色为红色
turtle.fillcolor('yellow')#设置填充颜色为黄色
#绘制过程
for i in range(5):#循环五次
    turtle.forward(120)#前进120像素
    turtle.right(144)#右转144度
turtle.end_fill()#填充完毕
turtle.hideturtle()#隐藏海龟画笔
turtle.done()#停止画笔绘制,但绘图窗体不关闭复制代码

3、程序运行
运行程序,我们看到画布上:小海龟先出现在原点,之后开始移动,绘制出一个红色的五角星,绘制步骤结束后为五角星填充了黄色。

project-image
project-image

4、程序优化

STEP1:编写程序

代码
import turtle#导入turtle库
import time#导入时间库
a = input("请输入画线颜色(回车键确认):")#将输入的画线颜色赋值给a
b = input("请输入填充颜色(回车键确认):")#将输入的填充颜色赋值给b
print("正在绘图中ing")#在终端打印文字“正在绘图中ing”
#绘制五角星
turtle.shape("turtle")#显示乌龟形状
turtle.penup()#抬笔,画笔移动时不绘制图形
turtle.goto(-50,0)#移动到(-50,0)坐标位
turtle.pendown()#落笔,画笔移动时绘制图形
turtle.speed(1)#设置画笔速度
time.sleep(2)#延时两秒
turtle.begin_fill()#开始填充
turtle.pencolor(a)#设置画笔字体为a中的颜色
turtle.fillcolor(b)#设置填充字体为b中的颜色
for i in range(5):#循环五次
    turtle.forward(120)#前进120像素
    turtle.right(144)#右转144度
turtle.end_fill()#结束填充
turtle.hideturtle()#隐藏海龟画笔
turtle.done()#停止画笔绘制,但绘图窗体不关闭复制代码

5、程序运行
STEP1:点击运行,在终端交互界面中有提示,

project-image

STEP2:输入“red”并回车,有新提示

project-image

STEP3:输入“yellow”并回车,

project-image

STEP4:点击绘图窗口

这时候,五角星就已经在绘制啦,只是绘制的窗口并未像之前一样立马弹出,而是隐藏在了电脑的任务栏,这里需要我们手动点一下方能弹出。最终效果如下:

project-image

是不是很神奇呢,通过这种方式,我们只要在终端中输入想要的画笔颜色和填充颜色就能随心所欲得变化五角星的颜色啦,让我们换一种颜色再试一试吧!

project-image
project-image

五、巩固提高

项目回顾

本节课我们利用海龟绘图(turtle)库,在弹窗上调出了小海龟并使小海龟移动,绘制出了一个五角星,之后为五角星填充了颜色,并最终实现通过终端输入智能变化颜色的效果。

知识小结

project-image

项目拓展
让我们利用今天所学的python知识及绘制五角星的方式,尝试画一面国旗出来吧!想一想绘制它需要哪些步骤呢。(示例程序见附录3)

project-image

附录
附录1turtle相关函数
 

project-image

附录2国旗示例程序

代码
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)#设置当前朝向为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)#设置当前朝向为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)#设置当前朝向为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)#设置当前朝向为300°

评论

user-avatar