【笔记】《python语言程序设计》—python基本图形绘制
一、前言
学习就是一个不断的自下而上,自上而下的过程。
前段时间,学着用python实现网站的数据爬取,隐约get到python的一些语法和用法,感觉就是语法不难,关键在于解决问题的思维。
这是需求驱动后的学习。接下来,就需要对python进行系统地了解。
很早之前搜知乎的时候,就搜到MOOC上的一门《python语言程序设计》课程,讲得很好,而且,我还下载了课件,溜了一遍,感觉就挺有趣的。
趁着有了实战经验,就把这门入门课刷了一遍。果然是门好课!很适合小白入门,并系统学习,整个教学过程循序渐进,深入浅出,提纲挈领,很有意思!
课程是北京理工大学嵩天老师的《python语言程序设计》课程,现在已经开了11次课了。课程每个小视频短则几分钟,最长也不超过20分钟,不容易劝退。每章讲解有复习回顾及小结,在平台python123上有每章的练习和测试,直接反馈结果,激发继续学下去的兴趣。
个人感觉,老师说话速度慢了些,调成了2倍速播放,然后,花了大约3天的时间,把所有的视频,课件,练习和测试都刷了一遍,感觉对python的了解更系统了!
趁热打铁,把每章的知识点和练习、测试再进行整理回顾一下。
以下内容均来自课程:《python语言程序设计》 及平台python123,感兴趣的看课程视频,亲自练习,效果更好~
二、知识点
1. 深入理解Python语言
-
计算机技术的演进过程:现在为新计算时代
年份 时代 问题 2017-至今 人工智能时代 人类的问题 2008-2016 复杂信息系统时代 数据问题 1981-2008 网络和视窗时代 交互问题 1946-1981 计算机系统结构时代 计算能力问题 -
不同编程语言的初心和适用对象
编程语言 学习内容 语言本质 解决问题 适用对象 C 指针、内存、数据类型 理解计算机系统结构 性能 计算机类专业
| Java | 对象、跨平台、运行时 | 理解主客体关系 | 跨平台 | 软件类专业 |
| C++ | 对象、多态、继承 | 理解主客体关系 | 大规模程序 | 计算机类专业 |
| VB | 对象、按钮、文本框 | 理解交互逻辑 | 桌面应用 | 不确定 |
| Python | 编程逻辑、第三方库 | 理解问题求解 | 各类问题 | 所有专业 |
-
Python语言的特点
①Python语言是通用语言、脚本语言、开源语言、跨平台语言、多模型语言;
②Python特点与优势:语法简洁(C代码量的10%;强制可读性;较少的底层语法元素;多种编程方式;支持中文字符);生态高产(15万第三方库;快速增长的计算生态;避免重复造轮子;开放共享;跨操作系统平台);
③“超级语言”的诞生:机器语言→汇编语言→高级语言→超级语言;python是唯一的“超级语言”;
2. 实例2:Python蟒蛇绘制
蟒蛇绘制.pngimport turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor('purple')
turtle.seth(-40)
for i in range(4):
turtle.circle(40,80)
turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)
turtle.done()
3. turtle库的使用
-
turtle库基本介绍
①turtle(海龟)库:是turtle绘图体系的Python实现;Python语言的标准库之一;入门级的图形绘制函数库;
②turtle绘图体系:1969年诞生,主要用于程序设计入门;
③标准库:随解释器直接安装到操作系统中的功能模块;
④第三方库:需要经过安装才能使用的功能模块;
-
turtle绘图窗体布局
- turtle空间坐标体系
- turtle角度坐标体系
-
RGB色彩体系
①RGB每色取值范围0-255整数或0-1小数
②默认采用小数值,可切换为整数值:
turtle.colormode(mode)
,其中mode
包括1(RGB小数值模式);255(RGB整数值模式);
4. turtle程序语法元素分析
-
库的引用与import:
import <库名>
;import <库名> as <库别名>``from <库名> import <函数名>
;from <库名> import *
; -
turtle画笔控制函数:
①.
penup()
: 别名pu()
, 抬起画笔,海龟在飞行;
②.pendown()
: 别名pd()
, 落下画笔,海龟在爬行;
③.pensize()
: 别名width()
, 画笔宽度,海龟的腰围;
④.pencolor()
: 画笔颜色,海龟在涂装;例如,turtle.pencolor(‘purple’)
,turtle.pencolor(0.63,0.13,0.94)
,turtle.pencolor((0.63,0.13,0.94))
-
turtle运动控制函数:控制海龟走直线还是走曲线
①.
fd(d)
: 别名forward(d)
, 向前行进,海龟走直线;d
为行进距离,可以为负数;②.
circle(r, extent=None)
: 根据半径绘制extent
角度的弧形;r
为默认圆心再海龟左侧r
距离的位置;extent
为绘制角度,默认是360度整圆;
-
turtle方向控制函数:控制海龟面对方向
①. 绝对角度:
turtle.setheading(angle)
, 别名turtle.seth(angle)
,改变行进方向,海龟走角度;
②. 海龟角度:turtle.left(angle)
,海龟向左转;turtle.right(angle)
,海龟向右转;angle
为海龟当前行进方向上旋转的角度;
-
循环语句:按照一定次数循环执行一组语句;
-
range()函数:产生循环计数序列;
range(N)
:产生0到N-1的整数序列,共N个;range(M,N)
:产生M到N-1的整数序列,共N-M个;
三、练习
1. 实例2: Python蟒蛇绘制
同上
2. turtle正方形绘制
正方形.png描述:使用turtle库,绘制一个正方形。
import turtle as t
t.setup(900,900)
t.pensize(5)
for i in range(0,4):
t.fd(200)
t.right(90)
t.fd(200)
t.done()
3. turtle六边形绘制
六边形.png描述:使用turtle库,绘制一个六边形。
import turtle as t
t.setup(900,900)
t.penup()
t.fd(-200)
t.pendown()
t.pensize(5)
for i in range(0,6):
t.fd(200)
t.left(60)
t.done()
4. turtle叠边形绘制
叠边形.png描述:使用turtle库,绘制一个叠边形,其中,叠边形内角为100度。
import turtle as t
t.setup(900,900)
t.pensize(5)
for i in range(0,9):
t.fd(200)
t.left(80)
t.done()
5. turtle风轮绘制
风轮.png描述:使用turtle库,绘制一个风轮效果,其中,每个风轮内角为45度,风轮边长150像素。
提示:turtle.goto(x,y)函数,能够将turtle画笔移动到坐标(x,y)
import turtle as t
t.setup(500,500)
t.pensize(4)
t.goto(0,150)
t.circle(-150,45)
t.goto(0,0)
t.right(45)
t.goto(150,0)
t.circle(-150,45)
t.goto(0,0)
t.right(45)
t.goto(0,-150)
t.circle(-150,45)
t.goto(0,0)
t.right(45)
t.goto(-150,0)
t.circle(-150,45)
t.goto(0,0)
四、测试
1.选择题
-
哪个选项不能正确引用turtle库进而使用setup()函数?
A import setup from turtle
B from turtle import*
C import turtle as t
D import turtle
import只有三种使用方法,以turtle库为例:
import turtle
from turtle import setup 或 from turtle import *
import turtle as t (其中t是别名,可以更换其他名称)
-
关于turtle库,哪个选项的描述是错误的?
A turtle坐标系的原点默认在屏幕左上角
B turtle库是一个直观有趣的图形绘制函数库
C turtle库最早成功应用于LOGO编程语言
D turtle绘图体系以水平右侧为绝对方位的0度
turtle坐标系的原点默认在窗体正中间
-
哪个选项是turtle绘图中角度坐标系的绝对0度方向?
A 画布正下方 B 画布正右方 C 画布正上方 D 画布正左方
坐标系类似这样,角度坐标系的绝对0度方向是右侧
-
哪个选项是下面代码的执行结果?
turtle.circle(-90,90)
A 绘制一个半径为90像素的弧形,圆心在小海龟当前行进的左侧
B 绘制一个半径为90像素的整圆形
C 绘制一个半径为90像素的弧形,圆心在小海龟当前行进的右侧
D 绘制一个半径为90像素的弧形,圆心在画布正中心
circle(x, y) 表示 以x长度为半径,y为角度,当前方向左侧x出为圆心,画圆。其中x和y都可以是负数,相应取反。
-
关于turtle库绘图函数,哪个选项的描述是错误的?
A turtle.seth(to_angle)函数的作用是设置小海龟当前行进方向为to_angle,to_angle是角度的整数值
B turtle.circle(radius, extent=None)函数的作用是绘制一个椭圆形,extent参数可选
C turtle.fd(distance)函数的作用是向小海龟当前行进方向前进distance距离
D turtle.pensize(size)函数的作用是改变画笔的宽度为size像素
circle()函数不能绘制椭圆形。
-
关于turtle库的画笔控制函数,哪个选项的描述是错误的?
A turtle.width()和turtle.pensize()都可以用来设置画笔尺寸
B turtle.colormode()的作用是设置画笔RGB颜色的表示模式
C turtle.pendown()作用是落下画笔,并移动画笔绘制一个点
D turtle.penup()的别名有turtle.pu(),turtle.up()
turtle.pendown()只是放下画笔,并不绘制任何内容。
-
哪个选项不能改变turtle画笔的运行方向?
A left() B bk() C right() D seth()
bk()只能后退,但不改变方向,"后退"不是"转向"。
-
哪个选项所列保留字能够实现对一组语句的循环执行?
A while和def B if和else C for和in D range()
循环相关保留字是:for..in和while,但def用于定义函数,不相关。
-
哪个选项能够使用turtle库绘制一个半圆形?
A turtle.circle(100) B turtle.circle(100, -180)
C turtle.circle(100, 90) D turtle.fd(100)
circle(x,y)函数的用法,绘制半圆,第二个参数y是180的奇数倍。
-
哪个选项对turtle.done()的描述是正确的?
A turtle.done()放在代码最后,是turtle绘图的必要要求,表示绘制完成 B turtle.done()用来隐藏turtle绘制画笔,一般放在代码最后
C turtle.done()用来停止画笔绘制,但绘图窗体不关闭
D turtle.done()用来暂停画笔绘制,用户响应后还可以继续绘制
建议在每个turtle绘图最后增加turtle.done()。
2.程序设计题
- turtle八边形绘制
八边形.png描述:使用turtle库,绘制一个八边形。
import turtle as t
t.pensize(2)
for i in range(0,8):
t.fd(100)
t.left(45)
- turtle八角图形绘制
八角图形.png描述:使用turtle库,绘制一个八角图形。
import turtle as t
t.pensize(2)
for i in range(0,8):
t.fd(150)
t.left(135)
【笔记】《python语言程序设计》—Python基本语法元素