第9章、Python标准库概览

本文介绍了Python的turtle、random和time标准库,详细讲解了turtle库进行图形绘制的基础概念、函数及应用示例,random库生成随机数的原理和用法,以及time库处理时间和计时的相关功能。
摘要由CSDN通过智能技术生成

第9章、Python标准库概览

1、turtle库概述

1、turtle库概述
turtle(海龟)是Python重要的标准库之一,它能够进行基本的图形绘制。turtle图形绘制的概念诞生于1969年,成功就用于LOGO编程语言。由于turtle图形绘制概念十分直观且非常流行,Python接受了这个概念,形成了Python的turtle库,并成为标准库之一。
turtle库绘制图形有一个基本框架:一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形。对于小海龟来说,有“前进”“后退”“旋转”等爬行行为,对坐标系的探索也通过“前进方向”“后退方向”“左侧方向”和“右侧方向”等小海龟自身角度方位来完成。则开始绘制时,小海龟位于画布中,此处坐标为(0,0),前进方向为水平右方。
在这里插入图片描述
turtle是最有价值的程序设计入门实践库,它是程序设计入门层面最常用的基本绘图库。使用import保留字对turtle库的引用有如下3种方式:
import turtle,则对turtle库中函数调用采用turtle.函数名()形式。
from turtle import*,则对turtle库中函数调用直接采用函数名()形式,不再使用turtle作为前导。
import turtle as t ,则对turtle库中函数调用采用更简洁的t.函数名()形式,保留字as 的作用是将turtle库给予别名t。此处也可以使用t之外的其他别名。

2、turtle库与基本绘图

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

  • (1)、窗体函数

Turtle库的turtle.setup()函数与窗体有关
函数定义如下:
turtle.setup(width,height,startx,starty)
参数详解:
width:窗口宽度。如果值是整数,表示的是像素值:如果值是小数,表示窗口宽度与屏幕的比例。
height:窗口高度。如果值是整数,表示的是像素值;如果值是小数,表示窗口高度与屏幕的比例。
startx:窗口左侧与屏幕左侧的像素距离。如果值是None,窗口位于屏幕水平中央。
starty:窗口顶部与屏幕顶部的像素距离。如果值是None,窗口位于屏幕垂直中央。

  • (2)、画笔状态函数
    在这里插入图片描述
     pendown():将画笔放下,使得画笔移动时开始绘制图形。
     penup():将画笔抬起,使得画笔移动时不会绘制图形。
     pensize(width):设置画笔的宽度,width 参数表示画笔的粗细。
     pencolor(color):设置画笔的颜色,可以是预定义的颜色名称(如 “red”、“blue”)或十六进制颜色代码(如 “#FF0000”、“#0000FF”)。在使用 RGB 值时,通常是按照 r, g, b 的顺序提供三个整数值,分别代表红色、绿色和蓝色的分量。每个分量的取值范围是 0-255,其中 0 表示没有该颜色成分,而 255 表示该颜色成分的最大强度。也可以取值范围是 0-1。
     begin_fill():标记填充区域的起始点。
     end_fill():标记填充区域的结束点,并进行填充。
     filling():返回当前图形背景颜色的填充状态,如果当前代码在 begin_filI()和 end_fill()之间,则返回 True,器则返回False。
     clear()函数:清空当前海龟对象绘制的图形,但不改变其位置和角度。参数:无
     reset():清空当前绘图窗口,海龟对象绘图位置和角度归为原点。参数:无
     screensize()函数设置画布窗口的宽度、高度和背景颜色。turtle.screensize(width,height,bgcolor) 作用:设置当前画布窗口的宽度为width,高度为height,背景颜色为bgcolor,如果不给出参数,则以元组形式返回当前画布窗口的宽度和高度(width,height)参数:width:窗体的宽度,以像素为单位height:窗体的高度,以像素为单位参数:无
     speed(speed):设置绘图的速度,可以是一个整数值(0-10)表示速度的快慢,0 表示最快,10 表示最慢。
     isdown():检查画笔是否处于下降状态(即画笔放下)。
     goto(x, y):将画笔移动到指定的坐标 (x, y) 处。
     setx(x):将画笔的 X 坐标移动到指定的位置 x。
     sety(y):将画笔的 Y 坐标移动到指定的位置 y。
     heading():返回当前画笔的朝向角度。
     setheading(angle):设置画笔的朝向角度,其中 angle 是一个角度值。
     circle(radius, extent=None):绘制一个圆形或弧形,其中 radius 是半径大小,extent 是绘制的角度范围,默认是绘制完整的圆。
  • (3)、画笔运动函数

turtle通过一组函数控制画笔的行进动作,进而绘制形状。
在这里插入图片描述
(4)、绘制四个图形
 绘制一个蓝色的菱形

import turtle as t
t.pensize(4)
t.penup()
t.goto(-100,-50)
t.pendown()
t.begin_fill()
t.color('blue')
t.circle(40,steps=4)
t.end_fill()
t.done()

 绘制一个绿色的五边形

import turtle as t
t.pensize(4)
t.penup()
t.goto(0,-50)
t.pendown()
t.begin_fill()
t.color('green')
t.circle(40,steps=5)
t.end_fill()
t.done()

 绘制一个黄色的六边形

import turtle as t
t.pensize(4)
t.penup()
t.goto(100,50)
t.pendown()
t.begin_fill()
t.color('yellow')
t.circle(40,steps=6)
t.end_fill()
t.done()

 绘制一个红色的圆形

import turtle as t
t.pensize(4)
t.penup()
t.goto(0,-50)
t.pendown()
t.begin_fill()
t.color('red')
t.circle(40)
t.end_fill()

3、random库概述

随机数在计算机应用中十分常见,Python语言提供了random库用于产生各种分布的伪随机数序列。random库采用梅森旋转算法生成伪随机数序列,可用于除随机性要求更高的加密算法外的大多数工程应用。
使用random库的主要目的是生成随机数。这个库提供了不同类型的随机数,其中最基本的函数是random.random(),它生成一个[0.0,1.0)之间的随机小数,所有其他随机数都是基国于这个函数而来的。

4、random库与随机数运用

在这里插入图片描述
与其他编程语言相似,Python语言中随机数的生成基于随机数“种子”,每个种子作为输入,利用算法生成一系列随机数,构成伪随机序列。random库使用random.seed(a)对后续产生成的随机数设置种子。
所有的随机数都是基于random()函数实现的基种具体功能。(再次设置相同的种子,则后续产生的随机数相同)

import random as r
r.seed(10)
a=r.random()
b=r.random()

r.seed(10)
c=r.random()
d=r.random()
print(a,b,c,d)
#运行结果:
# 0.5714025946899135 0.4288890546751146 0.5714025946899135 0.4288890546751146

5、time库概述

处理时间是程序最常用的功能之一,time库是Python提供的处理时间标准库。Time库提供系统级精确计时器的计时功能,可以用来分析程序性能,也可让程序暂停运行时间。
使用time库之前需要使用import进行导入
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()。
使用time.time()获取当前时间戳,即从某一固定时间(通常是1970年1月1日午夜)到当前时间的秒数。

import time
print(time.time())
#运行结果:
1690111588.1568534

使用time.gmtime(sec)获取当前时间截对应的struct_time对象。

  • time.gmtime(sec)函数接受一个时间戳作为参数(通常是从time.time()函数获得的时间戳),并返回一个struct_time对象,其中包含了与时间戳对应的具体时间信息。这个时间是基于UTC(协调世界时)的标准时间。
  • struct_time是一个具有特定字段的命名元组,它表示时间的各个组成部分,如年、月、日、小时、分钟、秒等等。这些字段可以直接访问,以获取或修改特定的时间信息。
import time
print(time.gmtime(time.time()))
#运行结果:
time.struct_time(tm_year=2023, tm_mon=7, tm_mday=23, tm_hour=11, tm_min=26, tm_sec=3, tm_wday=6, tm_yday=204, tm_isdst=0)

使用 time.localtime(secs)获取当前时间戳对应的本地时间的struct_time对象。与time.gmtime()的区别,是UTC时间已自动转的为北京时间。

import time
print(time.localtime(time.time()))
#运行结果:
# time.struct_time(tm_year=2023, tm_mon=7, tm_mday=23, tm_hour=19, tm_min=24, tm_sec=45, tm_wday=6, tm_yday=204, tm_isdst=0)

time.ctime(secs)获取当前时间戳对应的场读字符串表示,内部会调用 time.localtime()函数以输出当地时间。

import time
print(time.ctime())
#运行结果:
# Sun Jul 23 19:27:16 2023

time库使用 time.mktime()、time.strftime()、time.strptime()进行时间格式化。
使用time.mktime(t)将struct_time对象t转换为时间戳,注意t代表当地时间。
在这里插入图片描述
调用 time.mktime(t)函数

import time
t=time.localtime(time.time())
b=time.ctime(time.mktime(t))
print(time.mktime(t))
print(b)
#运行结果:
# 1690112178.0
Sun Jul 23 19:36:18 2023

time.strftime()函数是时间格式化最有效的方法,几乎可以以任何通用格式输出时间。该方法利用一个格式字符串,对时间格式化进行表示。

import time
lctime=time.localtime()
a=time.strftime('%Y-%m-%d %H:%M:%S',lctime)
print(a)
#运行结果:
2023-07-23 19:41:31

在这里插入图片描述
strptime()方法与strftime()方法完全相反,用于提取字符串中的时间来生成 struct_time对象,可以很灵活地作为time模块输入接口。

6、选择题

(1)以下对turtle库最合适的描述是()
A、绘图库
B、数值计算库
C、爬虫库
D、时间库
(2)turtle库中将画笔移动x像素的语句是()
A、turtle.forward(x)
B、turtle.circle(x)
C、turtle.right(x)
D、turtle.left(x)
(3)turtle.circle(50,180)的执行效果是()
A、绘制一个半径为50的圆
B、绘制一个半径为50的半圆
C、绘制一个半径为50的圆,分三次画完
D、绘制一个半径为50的圆形
(4)turtle.reset()方法的作用是()
A、撤消上一个turtle动作
B、清空画笔的状态
C、清空turtle窗口,重置turtle状态为起始状态
D、设置turtle图形可见
(5)random库用来生成随机数的算法是()
A、平方取中法
B、线性同余法
C、梅森旋算法
D、蒙特卡洛方法
(6)random.uniform(a,b)的作用是()
A、生成一个[a,b]之间的随机整数
B、生成一个[a,b]之间的随机小数
C、生成一个均值为a,方差为b的正态分布
D、生成一个(a,b)之间的随机数
(7)、

(8)设置turtle窗口大小的函数是()
A、turtle.setup()
B、turtle.window()
C、turtle.shape()
D、turtle.pensize()
(9)在turtle 坐标体系中,(0,0)坐标位于窗口的是()
A、左下角
B、正中央
C、左上角
D、右上角
(10)、

8、 编程题

① 利用time库将当前日期时间转化成类似’Sunday,8.January 201711:03PM’的格式

import time

# 获取当前时间戳
current_timestamp = time.time()

# 将时间戳转换为本地时间结构
local_time = time.localtime(current_timestamp)

# 构造自定义的日期时间格式
formatted_time = "{}, {}. {} {} {:02d}:{:02d}{}".format(
    time.strftime("%A", local_time),
    local_time.tm_mday,
    time.strftime("%B", local_time),
    local_time.tm_year,
    local_time.tm_hour % 12,
    local_time.tm_min,
    "am" if local_time.tm_hour < 12 else "pm"
)

# 输出结果
print(formatted_time)

② 使用turtle库绘制一朵玫瑰花

import turtle

# 创建画布和画笔
canvas = turtle.Screen()
canvas.bgcolor("black")
pen = turtle.Turtle()
pen.speed(10)
pen.color("red")

# 绘制玫瑰花
for _ in range(36):  # 绘制36片花瓣
    pen.forward(100)
    pen.right(45)
    pen.forward(100)
    pen.right(135)
    pen.forward(100)
    pen.right(45)
    pen.forward(100)
    pen.right(135)
    pen.right(10)  # 调整每片花瓣的角度

# 隐藏画笔
pen.hideturtle()

# 关闭画布
turtle.done()

③ 使用turtle库绘制一个颜色图谱

import turtle

# 创建画布和画笔
canvas = turtle.Screen()
canvas.bgcolor("black")
pen = turtle.Turtle()
pen.speed(10)

# 定义颜色列表
colors = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]

# 绘制颜色图谱
for i in range(len(colors)):
    pen.penup()
    pen.goto(-200, 200 - i*50)  # 设置每个颜色块的起始位置
    pen.pendown()
    pen.color(colors[i])
    pen.begin_fill()  # 开始填充颜色
    pen.forward(400)
    pen.right(90)
    pen.forward(50)
    pen.right(90)
    pen.forward(400)
    pen.right(90)
    pen.forward(50)
    pen.right(90)
    pen.end_fill()  # 结束填充颜色

# 隐藏画笔
pen.hideturtle()

# 关闭画布
turtle.done()

④ 利用random库生成一个包含10个 0~100之间随机整数的列表

import random

# 生成包含10个随机整数的列表
random_list = [random.randint(0, 100) for _ in range(10)]

# 输出结果
print(random_list)





import random

# 生成不重复的随机整数列表
random_list = random.sample(range(101), 10)

# 输出结果
print(random_list)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值