三儿的Python菜鸟历程--08--Python二级必考标准库turtle、random和time(理论笔记)

Python二级必考标准库turtle、random和time

  • 一、turtle库
    • 1.1 概述
    • 1.2 turtle库的基本使用
      • 1.2.1 窗体函数
      • 1.2.2 画笔状态函数
      • 1.2.3 画笔运动函数
    • 1.3 turtle库练习
  • 二、random库
    • 2.1 概述
  • 三、time库
    • 3.1概述
    • 3.2 时间格式化
  • 四、三大标准库实例解析--模拟绘画雪景


题外话】介于前几天春节来临是吧,给自己放了几天假。其实就是偷懒。好啦,说完啦。

一、turtle库

1.1 概述

  • turtle(海龟)是Python重要的标准库之一(这是句废话)。
  • 功能:进行基本的图形绘制。
  • 注意,turtle图形绘制概念诞生于1969年,并在LOGO编程语言中获得成功应用。所以Python接受了turtle的概念并形成了turtle库。
  • turtle库基本框架就是:一只海龟在一个坐标系中爬行,爬行轨迹形成了绘制的图形。海龟有“前进”、“后退”、“旋转”等动作,爬行时也有“前进方向”、“后退方向”、“左侧方向”、“右侧方向”等以海龟自身为基准的方位。

1.2 turtle库的基本使用

turtlr库包含100多个功能函数,主要包括窗体函数、画笔状态和画笔运动函数3种

1.2.1 窗体函数

turtle.setup(width,height,startx,starty)
width:窗口宽度。若为整数则代表像素值,小数则代表窗口宽度和屏幕的比例
height:窗口高度。若为整数则代表像素值,小数则代表窗口宽度和屏幕的比例
startx:窗体左侧和屏幕左侧的像素距离。值为None,窗体位于屏幕水平中央。
starty:窗体顶部与屏幕顶部的像素距离。值为None,窗体位于屏幕垂直中央

1.2.2 画笔状态函数

函数 描述
penup() 提起画笔,之后,移动不绘制图形
pendown() 放下画笔,之后,移动绘制图形,与penup()配套使用
pensize(width) 设置画笔线条粗细
pencolor() 设置画笔的颜色
color() 画笔和填充颜色
begin_fill() 填充图形前调用该方法
end_file() 填充图形结束
filling() 返回填充的状态,True为填充,False为未填充
clear() 清空当前窗口,但不改变画笔状态
reset() 清空当前窗口,同时重置位置等状态为默认值
screensize() 设置画布窗口的宽度、高度和背景颜色
hideturtle() 隐藏画笔的turtle形状
showturtle() 显示画笔的turtle形状
isvisible() 如果turtle可见,则返回True
write(str,font=None) 输出font字体的字符串

1.2.3 画笔运动函数

函数 描述
forward(distance) 别名:fd() 沿着当前方向前进指定距离
backward(distance) 别名:bk() 沿着当前相反的方向运动指定距离
right(angle) 向右旋转angle角度
left(angle) 向左旋转angle角度
goto(x,y) 移动到绝对坐标(x,y)处
setx(x) 画笔横坐标修改到x,纵坐标不变
sety(y) 画笔纵坐标修改到y,横坐标不变
setheading(angle) 别名:seth() 设置当前朝向angle角度
home() 设置画笔位置为原点,朝向东
circle(radius,extent=None,steps=None) 绘制一个半径为r,角度为e的圆或弧,steps为该圆的内切多边形,边数为steps
dot(radius,e) 绘制一个半径为r,颜色为e的圆点
undo() 撤销画笔最后一步操作
speed() 设置画笔的绘制速度,参数在0~10之间

1.3 turtle库练习

为了更好的理解这些函数的使用,在此给出三角形到多边形的彩色绘制以及文字输出的练习

import turtle as t #导入turtle包并起别名为 t 进行绘制

t.pensize(3)    #设置画笔粗细
# 绘制三角形
t.penup()                   #拿起画笔
t.goto(-200,-50)            #画笔移动到坐标(-200,-50处)
t.speed(1)                  #设置画笔速度
t.begin_fill()              #填充图形前调用
t.color('red')              #填充颜色为red
t.circle(40,steps=3)        #绘制半径四十的圆的内接三角形。
t.end_fill()                #结束填充
# 绘制四边形
t.penup()                   #拿起画笔
t.goto(-100,-50)            #画笔移动到坐标(-100,-50处)
t.speed(1)                  #设置画笔速度
t.begin_fill()              #填充图形前调用
t.color('blue')              #填充颜色为blue
t.circle(40,steps=4)        #绘制半径四十的圆的内接四边形。
t.end_fill()                #结束填充
# 绘制五边形
t.penup()                   #拿起画笔
t.goto(0,-50)               #画笔移动到坐标(0,-50处)
t.speed(1)                  #设置画笔速度
t.begin_fill()              #填充图形前调用
t.color('green')            #填充颜色为green
t.circle(40,steps=5)        #绘制半径四十的圆的内接五边形。
t.end_fill()                #结束填充
# 绘制六边形
t.penup()                   #拿起画笔
t.goto(100,-50)             #画笔移动到坐标(100,-50处)
t.speed(1)                  #设置画笔速度
t.begin_fill()              #填充图形前调用
t.color('yellow')           #填充颜色为yellow
t.circle(40,steps=6)        #绘制半径四十的圆的内接六边形。
t.end_fill()                #结束填充
# 绘制圆形
t.penup()                   #拿起画笔
t.goto(200,-50)             #画笔移动到坐标(-200,-50处)
t.speed(1)                  #设置画笔速度
t.begin_fill()              #填充图形前调用
t.color('purple')           #填充颜色为red
t.circle(40)                #绘制半径四十的圆
t.end_fill()                #结束填充
# 文字输出
t.color('green')            #文字表示颜色
t.penup()                   #拿起画笔
t.goto(-100,50)             #移动到(-100,50)坐标处
t.pendown()                 #放下画笔
t.write(('Cool Colorful Shapes'),font=('Time','18','bold'))
t.hideturtle()
t.done()

效果如下:
三儿的Python菜鸟历程--08--Python二级必考标准库turtle、random和time(理论笔记)_第1张图片


二、random库

2.1 概述

random库采用梅森旋转算法生成伪随机数序列,可用于出随机数要求更高的解加密算法外的大多数工程应用。random库提供了不同类型的随机数函数,最基本的函数是random.random(),它生成一个[0.0,1.0)之间的小数。所有其他的随机函数都是基于这个函数扩展而来。
random库中常用函数如下表

函数 描述
seed(a = None) 初始化随机数种子,默认值为时间
random() 生成一个[0.0 ,1.0)之间的小数
randint(a,b) 生成一个[a,b]之间的整数、
getrandbits(k) 生成一个k比特长度的随机整数
randrange(start,stop[,step]) 生成一个[start,stop)之间以step为步长的随机整数
uniform(a,b) 生成一个[a,b]之间的随机小数
choice(sep) 从序列类型(例如列表)中随机返回一个元素
shuffle(sep) 将序列类型中元素随机排列,返回打乱后的序列
sample(pop,k) 从pop类型中随机选取k个元素,以列表类型返回

三、time库

3.1概述

  • 处理时间是程序最常用的功能之一。
  • 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()

3.2 时间格式化

time.strftime()几乎可以以任意通用格式输出时间。下表列出该方法的控制符

格式化字符串 日期/年份 值范围
%y 两位数的年份表示 (00-99)
%Y 四位数的年份表示 (0001-9999)
%m 月份 (01-12)
%d 月内中的一天 (0-31)
%H 24小时制小时数 (0-23)
%I 12小时制小时数 (01-12)
%M 分钟数 (00-59)
%S (00-59)
%a 本地简化星期名称 Mon~Sun
%A 本地完整星期名称 Monday~Sunday
%b 本地简化的月份名称 Jan~Dec
%B 本地完整的月份名称 January~December
%c 本地相应的日期表示和时间表示
%j 年内的一天 (001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数 (00-53)星期天为星期的开始
%w 星期 (0-6),星期天为星期的开始
%W 一年中的星期数 (00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

四、三大标准库实例解析–模拟绘画雪景

  • 需求:雪景背景为 黑色,分为上下两个区域,上方是漫天雪花,下方是由远及近的灰色横线渐变。
  • 分析:运用了随机元素,如雪花位置、颜色、大小、雪花花瓣数量、地面灰色横线长度、线条位置等。

【步骤】

  • 第一步:构建图背景。、
setup(800,600) # 创建画布800*600
bgcolor('black')
  • 第二步:绘制雪花效果。
#雪花效果实现
def drawSnow():
    hideturtle() #为了效果,隐藏画笔
    pensize(2)
    for i in range(100):# 循环绘制100朵雪花。

        #为了使雪花颜色随机,使用random()函数生成画笔颜色rgb值。
        r,g,b = random(),random(),random()
        pencolor(r,g,b)
        #在上方雪花区域随机选点
        penup()
        setx(randint(-350,350))
        sety(randint(1,270))
        pendown()
        #随机生成雪花花瓣数量和大小,利用循环画出每个花瓣
        dens = randint(5,12)
        snowsize = randint(8,14)
        for j in rang(dens):
            # 以初始点为中心向前移动sonwsize单位再返回原点,完成一片花瓣的绘制
            forward(sonwsize)
            backward(sonwsize)
            # 绘制完成,转动一定角度绘制下一片
            right(360/dens)
  • 第三步:绘制雪地效果。
# 雪地效果实现
def drawGround():
    hideturtle()
    for i in range(400):# 绘制400条横线模拟雪地
        pensize(randint(5,10))#画笔大小随机
        x = randint(-400,350)
        y = randint(-280,-1)
        r,g,b = -y/280,-y/280,-y/280
        pencolor((r,g,b))
        penup()
        goto(x,y)
        pendown()
        forward(randint(40,100))


完成代码如下

# SnowView.py
from turtle import *
from random import *

#雪花效果实现
def drawSnow():
    hideturtle() #为了效果,隐藏画笔
    pensize(2)
    for i in range(100):# 循环绘制100朵雪花。

        #为了使雪花颜色随机,使用random()函数生成画笔颜色rgb值。
        r,g,b = random(),random(),random()
        pencolor(r,g,b)
        #在上方雪花区域随机选点
        penup()
        setx(randint(-350,350))
        sety(randint(1,270))
        pendown()
        #随机生成雪花花瓣数量和大小,利用循环画出每个花瓣
        dens = randint(5,12)
        snowsize = randint(8,14)
        for j in range(dens):
            # 以初始点为中心向前移动sonwsize单位再返回原点,完成一片花瓣的绘制
            forward(snowsize)
            backward(snowsize)
            # 绘制完成,转动一定角度绘制下一片
            right(360/dens)

# 雪地效果实现
def drawGround():
    hideturtle()
    for i in range(400):# 绘制400条横线模拟雪地
        pensize(randint(5,10))#画笔大小随机
        x = randint(-400,350)
        y = randint(-280,-1)
        r,g,b = -y/280,-y/280,-y/280
        pencolor((r,g,b))
        penup()
        goto(x,y)
        pendown()
        forward(randint(40,100))



setup(800,600) # 创建画布800*600

#绘制开始前调用tracer(False)
#tracer()方法是直接展示给用户绘制结果,无需漫长的等待绘制过程。
#这个方法turtle里有,turle.Turtle里面也有,效果是一样的

tracer(False)# 直接展示结果,不显示绘画过程
bgcolor('black')
# 调用函数进行绘制
drawSnow()
drawGround()

done()# 画笔停止绘画,窗体不关闭

效果如下(卡顿是因为为了录制添加的sleep(15)睡眠,去掉睡眠后无卡顿):
三儿的Python菜鸟历程--08--Python二级必考标准库turtle、random和time(理论笔记)_第2张图片

你可能感兴趣的:(Python理论笔记)