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之外的其他别名。
Turtle库包含100多个功能函数,主要包括窗体函数、画笔状态、画笔运动函数3类。
Turtle库的turtle.setup()函数与窗体有关
函数定义如下:
turtle.setup(width,height,startx,starty)
参数详解:
width:窗口宽度。如果值是整数,表示的是像素值:如果值是小数,表示窗口宽度与屏幕的比例。
height:窗口高度。如果值是整数,表示的是像素值;如果值是小数,表示窗口高度与屏幕的比例。
startx:窗口左侧与屏幕左侧的像素距离。如果值是None,窗口位于屏幕水平中央。
starty:窗口顶部与屏幕顶部的像素距离。如果值是None,窗口位于屏幕垂直中央。
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()
随机数在计算机应用中十分常见,Python语言提供了random库用于产生各种分布的伪随机数序列。random库采用梅森旋转算法生成伪随机数序列,可用于除随机性要求更高的加密算法外的大多数工程应用。
使用random库的主要目的是生成随机数。这个库提供了不同类型的随机数,其中最基本的函数是random.random(),它生成一个[0.0,1.0)之间的随机小数,所有其他随机数都是基国于这个函数而来的。
与其他编程语言相似,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
处理时间是程序最常用的功能之一,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对象。
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模块输入接口。
(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)、
① 利用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)