时间:2021/09/04
1.turtle库概述
- turtle(海龟),能够进行基本的图形绘制。
- turtle库绘制图形有一个基本框架:一只小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形。
- 对于小海龟来说,小海龟通过自身角度方位的转变来完成对坐标系的探索。
- 使用import关键字引入turtle库有如下3种方式:
1.import turtle,对turtle库中函数调用采用 turtle.函数名()形式
import turtle
turtle.circle(200)
2.from turtle import * ,对turtle库中函数调用直接采用 函数名()形式,不再使用turtle作为前导
from turtle import *
circle(200)
3.import turtle as t ,则对turtle库中函数调用采用更简洁的 t.函数名()形式,关键字as的作用是将turtle库给予别名t。此处也可以使用t之外的其他命名。
import turtle as t
t.circle(200)
2.turtle库与基本绘图
turtle库包含100多个功能函数,主要包括窗体函数、画笔状态和画笔运动函数3类。
2.1 窗体函数
- turtle库的turtle.setup()函数与窗体有关
- 函数定义如下:
turtle.setup(width,height,startx,starty)
- 参数解析:
- width:窗口宽度。如果值是整数,表示的是像素值;如果值是小数,表示窗口宽度与屏幕的比例。
- height:窗口高度。如果值是整数,表示的是像素值;如果值是小数,表示窗口高度与屏幕的比例。
- startx:窗口左侧与屏幕左侧的像素距离。如果值是None,窗口位于屏幕水平中央。
- starty:窗口顶部与屏幕顶部的像素距离。如果值是None,窗口位于屏幕垂直中央。
import turtle
turtle.setup(100,100,100,100)
2.2 画笔状态函数
函数 | 描述 |
---|---|
pendown() | 放下画笔 |
penup() | 提起画笔 |
pensize(width) | 设置画笔线条的粗细为指定大小 |
pencolor() | 设置画笔颜色 |
color() | 设置画笔和填充颜色 |
begin_fill() | 填充图形前,调用该方法 |
end_fill() | 填充图形结束 |
filling() | 返回填充的状态,True为填充,False为未填充 |
clear() | 清空当前窗口,但不改变当前窗口的位置 |
reset() | 清空当前窗口,并重置位置等状态为默认值 |
screensize() | 设置画布窗口的宽度、高度和背景颜色 |
hideturtle() | 隐藏画笔的turtle形状 |
showturtle() | 显示画笔的turtle形状 |
isvisible() | 如果turtle可见,则返回True |
write(str,font=None) | 输出font字体的字符串 |
turtle中的画笔(即小海龟)可以通过一组函数来控制,其中turtle.penup()和turtle.pendown()是一组,分别表示画笔的提起和放下
turtle.penup()别名turtle.pu()或turtle.up()
作用:提起画笔,之后,移动画笔不会绘制形状
参数:无
turtle.pendown()别名turtle.pd()或turtle.down()
作用:放下画笔,之后,移动画笔将会绘制形状
参数:无
turtle.pensize()函数用来设置画笔尺寸。
turtle.pensize(width)别名turtle.width()
作用:设置画笔宽度,当无参数输入时则返回当前画笔的宽度
参数:width:设置的画笔线条宽度,如果为None或者为空,函数则返回当前画笔宽度
turtle.pencolor()函数给画笔设置颜色。
turtle.pencolor(colorstring)或turtle.pencolor((r,g,b))
作用:设置画笔颜色,当无参数输入时返回当前画笔颜色
参数:
colorstring:表示颜色的字符串,如“purple”,“red”等。
(r,g,b):颜色对应的RGB的0-1数值,例如:(0,0,0)是黑色,(255,255,255)是白色
turtle.color()函数能够同时设置画笔和背景填充的颜色。
turtle.color(colorstring1,colorstring2)或者turtle.color((r1,g1,b1),(r2,g2,b2))
作用:设置画笔和背景颜色,当无参数输入时返回当前画笔和背景颜色
参数:
colorstring1:表示颜色的字符串。
(r,g,b):颜色对应的RGB的0-1数值,例如:(0,0,0)是黑色,(255,255,255)是白色
turtle.begin_fill()和turtle.end_fill()函数用来设置填充色彩,这两个函数成对使用。
turtle.begin_fill()
作用:设置填充区域颜色。在开始绘制填充背景图形前调用。
参数:无
turtle.end_fill()
作用:turtle.begin_fill()的配对函数。在结束绘制拟填充背景图形后调用。
参数:无
import turtle as t
t.color('red','blue')
t.begin_fill()
# 画一个半径为50的圆
t.circle(50)
# 画图结束后用蓝色填充圆形内部
t.end_fill()
turtle.filling()
作用:返回当前图形背景颜色的填充状态,如果当前代码在begin_fill()和end_fill()之间,则返回True,否则返回False。
参数:无
turtle.clear()函数清空当前窗口
turtle.clear()
作用:清空当前海龟对象绘制的图形,但不改变其位置和角度
参数:无
turtle.reset()
作用:清空当前绘图窗口,海龟对象绘图位置和角度回归原点
参数:无
turtle.screensize()函数设置画布窗口的宽度、高度和背景颜色。
turtle.screensize(width,height,bgcolor)
作用:设置当前画布窗口的宽度为width,高度为height,背景颜色为bgcolor,如果不给出参数,则以元组形式返回当前画布窗口的宽度和高度(width,height)
参数:
width:窗体的宽度,以像素为单位
height:窗体的高度,以像素为单位
bgcolor:表示颜色的字符串或颜色对应的RGB的0-1数值
turtle.hideturtle()
作用:隐藏画笔的turtle形状
参数:无
turtle.showturtle()
作用:显示画笔的turtle
参数:无
turtle.isvisible()
作用:如果turtle画笔的形状显示,则返回True,否则返回False
参数:无
turtle.write(str,font=None)
作用:根据设置的字体font形式,将字符串str显示在画布上
参数:
str:拟输出的字符串
font:字体名称、字体的尺寸和字体类型3个元素构成的元组
import turtle
turtle.write('helloworld',font=('Arial',50,'normal'))
2.3 画笔的运动函数
turtle通过一组函数控制画笔的行进动作,进而绘制形状
函数 | 描述 |
---|---|
forward(distance) | 沿着当前方向前进指定距离 |
backward(distance) | 沿着当前相反方向后退指定距离 |
right(angle) | 向右旋转angle角度 |
left(angle) | 向坐旋转angle角度 |
goto(x,y) | 移动到绝对坐标(x,y)处 |
setx(x) | 修改画笔的横坐标x,纵坐标不变 |
sety(x) | 修改画笔的纵坐标y,横坐标不变 |
setheading(angle) | 设置当前朝向为angle角度 |
home() | 设置当前画笔位置为原点,朝向东 |
circle(radius,e) | 绘制一个指定半径r和角度e圆或弧形 |
dot(r,color) | 绘制一个指定半径r和颜色color的圆 |
undo() | 撤销画笔最后一步动作 |
speed() | 设置画笔的绘制速度,参数为0-10之间 |
turtle.fd()函数最常用,他控制画笔向当前行进方向前进一个距离
turtle.forward(distance)别名turtle.fd(distance)
作用:小海龟向当前行进方向前进distance距离
参数:distance:行进距离的像素值,当值为负数时,表示向相反方向前进
turtle.bk()函数控制画笔向进行方向的反方向运动一个距离
turtle.bk(distance)别名turtle.backward(distance)
作用:向小海龟当前行进的反方向运动distance距离,画笔方向不变
参数:distance:行进距离的像素值,当值为负数时,表示向前进方向运动
turtle.right(angle)
作用:改变画笔行进方向为当前方向右侧angle度。angle是角度相对值
参数:角度的整数值
turtle.left(angle)
作用:改变画笔行进方向为当前方向左侧angle度。angle是角度相对值
参数:角度的整数值
turtle.goto(x,y)
作用:移动画笔到画布中的特定位置,该位置以坐标(x,y)方式表达。如果当前画笔处于落下状态,则绘制当前位置到目标位置的线条
参数:
x:画布中特定位置的横坐标
y:画布中特定位置的纵坐标
turtle.setx(x)
作用:修改画笔的横坐标到x,纵坐标不变
参数:x:画布中横坐标的一个值
turtle.sety(y)
作用:修改画笔的纵坐标到y,横坐标不变
参数:y:画布中纵坐标的一个值
turtle.setheading(to_angle)别名turtle.seth(to_angle)
作用:设置小海龟当前行进方向为to_angle,该角度是绝对方向角度值
参数:to_angle:角度的整数值
(turtle库的角度坐标体系以正东向为0度,以正西方向为180度)
turtle.home()
作用:移动画笔到坐标系原点,画笔方向为初始方向
参数:无
turtle.circle(radius,extent=None)
作用:根据半径radius绘制extent角度的弧形
参数:
radius:弧形半径。当值为正数时,半径在小海龟左侧,当值为负数时,半径在小海龟右侧
extent:绘制弧形的角度。当不给该参数或参数为None时,绘制整个圆形
turtle.dot(size,color)
作用:绘制一个带有背景色color、直径为size的圆点
参数:
size:圆点的直径,像素值
color:颜色字符串或RGB的0-1值,表示背景颜色
turtle.undo()
作用:撤销绘图的最后一次动作
参数:无
turtle.speed(s)
作用:设置画笔的绘制速度,参数为0-10整数,0表示没有绘制动作,1-10逐步增加绘制速度,超过10则等同于参数为0。
参数:s:速度的设定值,0-10之间的整数。
import turtle as t
t.pensize(3)
t.penup()
t.goto(-200,-50)
t.pendown()
t.begin_fill()
t.color('green')
t.circle(50,steps=5)
t.end_fill()
3.random库概述
- python提供了random库用于产生各种分布的伪随机数序列。random库采用梅森旋转算法生成伪随机数序列,用于除随机性要求更高的加密算法外的大多数工程应用
- random库提供了不同类型的随机数,其中最基本的函数是random.random(),它生成一个[0.0-1.0]之间的随机小数,其他随机数都是基于这个函数而来的。
3.1 random库与随机数运用
函数 | 描述 |
---|---|
seed(a=None) | 初始化随机数种子,默认值为当前系统时间 |
random() | 生成一个[0.0,1.0]之间的随机小数 |
randint(a,b) | 生成一个[a,b]之间的整数,包含a和b |
getrandbits(k) | 生成一个k比特长度的随机整数 |
randrange(start,stop[,step]) | 生成一个[start,stop]之间以step为步数的随机整数 |
uniform(a,b) | 生成一个[a,b]之间的随机小数 |
choice(seq) | 从序列类型中随机返回一个元素 |
shuffle(seq) | 将序列类型中元素随机排列,返回打乱后的序列 |
sample(pop,k) | 从pop类型中随机选取k个元素,以列表类型返回 |
- python中随机数的生成基于随机数“种子”,每个种子作为输入,利用算法生成一系列随机数,构成伪随机序列。random库使用random.seed(a)对后续产生的随机数设置种子。
- 所有的随机数都是基于random()函数实现的几种具体功能。(设置相同的种子,则后续产生的随机数相同)
random.seed(s)
作用:为随机数序列确定种子,其中参数为种子
参数:s:随机数种子,一个整数或浮点数
4.time库概述
-
time库是python提供的处理时间标准库。time库提供系统级精确计时器的计时功能,可以用来分析程序性能,也可以让程序暂停运行时间。
-
time库的功能主要分为3个方面:
- 时间处理(4个函数)
- time.time()、time.gmtime()、time.localtime()、time.ctime()
- 时间格式化(3个函数)
- time.mktime()、time.strftime()、time.strptime()
- 计时(3个函数)
- time.sleep()、time.monotonic()、time.perf_counter()
- 时间处理(4个函数)
-
使用time.time()获取当前时间戳
- 使用time.gmtime(sec)获取当前时间戳对应的struct_time对象
- 使用time.localtime(secs)获取当前时间戳对应的本地时间的struct_time对象。与time.gmtime()的区别,是UTC时间已自动转化为北京时间
- time.ctime(secs)获取当前时间戳对应的易读字符串表示,内部会调用time.localtime()函数以输出当地时间。
- time库使用time.mktime()、time.strftime()、time.strptime()进行时间格式化。
- 使用time.mktime(t)将struct_time对象t转换为时间戳,注意t代表当地时间
- struct_time对象的元素构成
下标 | 属性 | 值 |
---|---|---|
0 | tm_year | 年份、整数 |
1 | tm_mon | 月份[1,12] |
2 | tm_mday | 日期[1,31] |
3 | tm_hour | 小时[0,23] |
4 | tm_min | 分钟[0,59] |
5 | tm_sec | 秒[0,60] |
6 | tm_wday | 星期[0,6] (0代表星期一) |
7 | tm_yday | 该年第几天[1,366] |
8 | tm_isdst | 是否夏令时,0否,1是,-1未知 |
-
调用time.mktime(t)函数
-
time.strftime()函数是时间格式化最有效的方法,几乎可以以任何通用格式输出时间。该方法利用一个格式字符串,对时间格式进行表示。
-
strftime()方法的格式化控制符
格式化字符串 | 日期/时间 | 值范围和实例 |
---|---|---|
%Y | 年份 | 0001-9999 例如:1900 |
%m | 月份 | 01-12 例如:10 |
%B | 月名 | January-December 例如:April |
%b | 月名缩写 | Jan-Dec 例如:Apr |
%d | 日期 | 01-31 例如:25 |
%A | 星期 | Monday-Sunday 例如:Wednesday |
%a | 星期缩写 | Mon-Sun 例如:Wed |
%H | 小时(24h制) | 00-23 例如:12 |
%l | 小时(12h制) | 01-12 例如:7 |
%p | 上/下午 | AM,PM 例如:PM |
%M | 分钟 | 00-59 例如:26 |
%S | 秒 | 00-59 例如:26 |
strptime()方法与strftime()方法完全相反,用于提起字符串中的时间来生成struct_time对象,可以很灵活的作为time模块输入接口