网站建设服务费计入什么科目,只做动漫的h网站,上传网站再备案,谷歌推广一年多少钱Python标准库概览
知识点
标准库: turtle库(必选)标准库: random库(必选)、time库(可选#xff09;
知识导图 1、turtle库概述
turtle#xff08;海龟#xff09;是Python重要的标准库之一#xff0c;它能够进行基本的图形绘制。turtle库绘制图形有一个基本框架#x…Python标准库概览
知识点
标准库: turtle库(必选)标准库: random库(必选)、time库(可选
知识导图 1、turtle库概述
turtle海龟是Python重要的标准库之一它能够进行基本的图形绘制。turtle库绘制图形有一个基本框架一个小海龟在坐标系中爬行其爬行轨迹形成了绘制图形。对于小海龟来说有“前进”、“后退”、“旋转”等爬行行为对坐标系的探索也通过“前进方向”、“后退方向”、“左侧方向”和“右侧方向”等小海龟自身角度方位来完成。使用import保留字对turtle库的引用有如下三种方式第一种import turtle则对turtle库中函数调用采用 turtle.函数名() 形式。
import turtle
turtle.circle(200)第二种from turtle import *则对turtle库中函数调用直接采用 函数名()形式不在使用turtle.作为前导。
from turtle import *
circle(200)第三种import turtle as t则对turtle库中函数调用采用更简洁的 t.函数名() 形式保留字as的作用是将turtle库给予别名t。
import turtle as t
t.circle(200)1.1 turtle库与基本绘图
turtle库包含100多个功能函数主要包括窗体函数、画笔状态函数、画笔运动函数等三类。
1.2 窗体函数
turtle.setup(width, height, startx, starty)
作用设置主窗体的大小和位置
参数
width 窗口宽度如果值是整数表示的像素值如果值是小数表示窗口宽度与屏幕的比例
height:窗口高度如果值是整数表示的像素值如果值是小数表示窗口高度与屏幕的比例
startx窗口左侧与屏幕左侧的像素距离如果值是None窗口位于屏幕水平中央
starty窗口顶部与屏幕顶部的像素距离如果值是None窗口位于屏幕垂直中央
1.3 画笔状态函数
函数描述pendown()放下画笔penup()提起画笔与pendown()配对使用pensize(width)设置画笔线条的粗细为指定大小color()设置画笔的颜色begin_fill()填充图形前调用该方法end_fill()填充图形结束filling()返回填充的状态True为填充False为未填充clear()清空当前窗口但不改变当前画笔的位置reset()清空当前窗口并重置位置等状态为默认值screensize()设置画布的长和宽hideturtle()隐藏画笔的turtle形状showturtle()显示画笔的turtle形状isvisible()如果turtle可见则返回True
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”、blue等(r,g,b): 颜色对应RGB的01数值例如1, 0.65, 0
1.4 画笔运动函数
函数描述forward()沿着当前方向前进指定距离backward()沿着当前相反方向后退指定距离right(angle)向右旋转angle角度left(angle)向左旋转angle角度goto(x,y)移动到绝对坐标x,y处setx( )将当前x轴移动到指定位置sety( )将当前y轴移动到指定位置setheading(angle)设置当前朝向为angle角度home()设置当前画笔位置为原点朝向东。circle(radius,e)绘制一个指定半径r和角度e的圆或弧形dot(r,color)绘制一个指定半径r和颜色color的圆点undo()撤销画笔最后一步动作speed()设置画笔的绘制速度参数为0-10之间
turtle.fd()函数最常用它控制画笔向当前行进方向前进一个距离
turtle.seth()函数用来改变画笔绘制方向turtle.fd(distance) 别名 turtle.forward(distance)
作用向小海龟当前行进方向前进distance距离
参数
distance 行进距离的像素值当值为负数时表示向相反方向前进。
turtle.seth()函数用来改变画笔绘制方向
turtle.seth(to_angle) 别名 turtle.setheading(to_angle)
作用设置小海龟当前行进方向为to_angle该角度是绝对方向角度值。
参数
to_angle 角度的整数值。
turtle.circle()函数用来绘制一个弧形
turtle.circle(radius, extentNone)
作用根据半径radius绘制extent角度的弧形。
参数
radius 弧形半径当值为正数时半径在小海龟左侧当值为负数时半径在小海龟右侧
extent : 绘制弧形的角度当不给该参数或参数为None时绘制整个圆形。
2、random库概述
使用random库主要目的是生成随机数这个库提供了不同类型的随机数函数其中最基本的函数是random.random()它生成一个[0.0, 1.0)之间的随机小数所有其他随机函数都是基于这个函数扩展而来。
from random import *
print(random())
# 0.5780913011344704
print(random())
# 0.206098232139501742.1 random库与随机数运用
random库的常用函数
函数描述seed(aNone)初始化随机数种子默认值为当前系统时间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(seq)从序列类型(例如列表)中随机返回一个元素shuffle(seq)将序列类型中元素随机排列返回打乱后的序列sample(pop, k)从pop类型中随机选取k个元素以列表类型返回
random库使用random.seed(a)对后续产生的随机数设置种子a。
from random import *
seed(10)
print(random())
# 0.5714025946899135
print(random())
# 0.4288890546751146
seed(10) #再次设置相同的种子则后续产生的随机数相同
print(random())
# 0.5714025946899135
print(random())
# 0.4288890546751146设置随机数种子的好处是可以准确复现随机数序列用于重复程序的运行轨迹。对于仅使用随机数但不需要复现的情形可以不用设置随机数种子。n 如果程序没有显式设置随机数种子则使用随机数生成函数前将默认以当前系统的运行时间为种子产生随机序列。
3、time库概述
处理时间是程序最常用的功能之一time库是Python提供的处理时间标准库。time库提供系统级精确计时器的计时功能可以用来分析程序性能也可让程序暂停运行时间。
import time
print(time.localtime())time.struct_time(tm_year2017, tm_mon12,
tm_mday2, tm_hour14, tm_min44, tm_sec9,
tm_wday4, tm_yday26, tm_isdst0)time库的功能主要分为3个方面时间处理、时间格式化和计时。
• 时间处理主要包括4 个函数 time.tiem ( ) 、time.gmtime()、time.localtime() 、time.ctime()。
• 时间格式化主要包括3个函数time.mktime()、time.strftime()、time.strptime()。
• 计时主要包括3 个函数 time.sleep ( ) 、time.monotonic()、time.perf_counter()
使用time.time()获取当前时间戳
import time
print(time.time())
# 1516939876.6022282使用time.gmtime(secs)获取当前时间戳对应的struct_time对象
import time
print( time.gmtime(now))time.struct_time(tm_year2020, tm_mon1,
tm_mday26, tm_hour4, tm_min11, tm_sec16,
tm_wday4, tm_yday26, tm_isdst0)使用time.localtime(secs)获取当前时间戳对应的本地时间的struct_time对象
import time
print( time.localtime(now))time.struct_time(tm_year2020, tm_mon1, tm_mday26,
tm_hour12, tm_min11, tm_sec16, tm_wday4,
tm_yday26, tm_isdst0)注意结果与gmtime的区别UTC时间已自动转换为北京时间。使用time.ctime(secs)获取当前时间戳对应的易读字符串表示内部会调用time.localtime()函数以输出当地时间。
import time
print( time.ctime(now))
# Fri Jan 26 12:11:16 2020time库使用time.mktime()、time.strftime()、time.strptime()进行时间格式化。使用time.mktime(t) 将struct_time对象t转换为时间戳注意t代表当地时间。struct_time对象的元素如下
下标属性值0tm_year年份整数1tm_mon月份[1, 12]2tm_mday日期[1, 31]3tm_hour小时[0, 23]4tm_min分钟[0, 59]5tm_sec秒[0, 61]6tm_wday星期[0, 6]0表示星期一7tm_yday该年第几天[1, 366]8tm_isdst是否夏时令0否, 1是, -1未知
调用time.mktime(t)函数
import time
t time.localtime(now)
print( time.mktime(t))
# 1516939876.0
print( time.ctime(time.mktime(t)))
# Fri Jan 26 12:11:16 2020time.strftime()函数是时间格式化最有效的方法几乎可以以任何通用格式输出时间。该方法利用一个格式字符串对时间格式进行表达。
import time
lctime time.localtime()
print( lctime)time.struct_time(tm_year2020, tm_mon1, tm_mday26,
tm_hour12, tm_min55, tm_sec20, tm_wday4, tm_yday26,
tm_isdst0)print( time.strftime(%Y-%m-%d %H:%M:%S, lctime))
# 2020-01-26 12:55:20strftime()方法的格式化控制符
格式化字符串日期/时间值范围和实例%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%I小时12h制01 ~ 12例如7%p上/下午AM, PM例如PM%M分钟00 ~ 59例如26%S秒00 ~ 59例如26
strptime()方法与strftime()方法完全相反用于提取字符串中时间来生成strut_time对象可以很灵活的作为time模块的输入接口
import time
timeString 2020-01-26 12:55:20
print( time.strptime(timeString, %Y-%m-%d %H:%M:%S))time.struct_time(tm_year2020, tm_mon1, tm_mday26,
tm_hour12, tm_min55, tm_sec20, tm_wday4, tm_yday26,
tm_isdst-1)4、time库与程序计时
程序计时是非常常用的功能尤其是对于运行时间较长的程序往往需要先进行小规模短时间的实验并根据实验结果预估最终程序的大致运行时间。程序计时主要要包含三个要素程序开始/结束时间、程序运行总时间、程序各核心模块运行时间。下面以1千万次循环计时为例介绍程序计时的实现并进一步理解time模块相关函数的运用。以1千万次循环为主体模拟实际程序的核心模块用time.sleep()来模拟实际程序的其他模块。
import time
def coreLoop():limit 10**8while (limit 0):limit - 1
def otherLoop1():time.sleep(0.2)
def otherLoop2():time.sleep(0.4)def main():startTime time.localtime()print(程序开始时间, time.strftime(%Y-%m-%d %H:%M:%S, startTime))startPerfCounter time.perf_counter()otherLoop1()otherLoop1PerfCounter time.perf_counter()otherLoop1Perf otherLoop1PerfCounter - startPerfCountercoreLoop()coreLoopPerfCounter time.perf_counter()coreLoopPerf coreLoopPerfCounter - otherLoop1PerfCounterotherLoop2()otherLoop2PerfCounter time.perf_counter()otherLoop2Perf otherLoop2PerfCounter - coreLoopPerfCounterendPerfCounter time.perf_counter()totalPerf endPerfCounter - startPerfCounterendTime time.localtime()print(模块1运行时间是:{}秒.format(otherLoop1Perf))print(核心模块运行时间是:{}秒.format(coreLoopPerf))print(模块2运行时间是:{}秒.format(otherLoop2Perf))print(程序运行总时间是:{}秒.format(totalPerf))print(程序结束时间, time.strftime(%Y-%m-%d %H:%M:%S, endTime))
main()程序运行的输出效果如下
程序开始时间 2017-12-26 13:46:39
模块1运行时间是:0.20003105182731706秒
核心模块运行时间是:5.987101639820927秒
模块2运行时间是:0.40018931343066555秒
程序运行总时间是:6.587323585324574秒
程序结束时间 2017-12-26 13:46:455、实例解析雪景艺术绘图
turtle图形艺术指利用turtle库画笔创造性绘制绚丽多彩艺术图形的过程。turtle图形艺术效果中隐含着很多随机元素如随机颜色、尺寸、位置和数量等。在图形艺术绘制中需要引入随机函数库random。常用randint()函数生成指定范围内的随机数“雪景”图形艺术背景为黑色分为上下两个区域上方是漫天彩色雪花下方是由远及近的灰色横线渐变。该图运用了随机元素如雪花位置、颜色、大小、花瓣数目、地面灰色线条长度、线条位置等需要使用turtle库和random库。绘制分为三个步骤
\1. 构建图的背景
\2. 绘制雪花效果
\3. 绘制雪地效果
第一步构建图的背景
设定窗体大小为800x600像素窗体颜色为black。然后定义上方雪花绘制函数drawSnow()和下方雪地绘制函数drawGround()。
第二步绘制雪花效果。
为体现艺术效果drawSnow()函数首先隐藏turtle画笔、设置画笔大小、绘制速度然后使用for循环绘制100朵雪花。雪花大小snowsize、雪花花瓣数dens都分别设定为一定数值范围随机数。最后通过for循环绘制出多彩雪花。
第三步绘制雪地效果。
drawGround()函数使用for循环绘制地面400个小横线画笔大小pensize、位置坐标x、y、线段长度均通过randint()函数作为随机数产生。
# SnowView.py
from turtle import *
from random import *
def drawSnow():hideturtle()pensize(2)for i in range(100):r, g, b random(), random(), random()pencolor(r,g,b)penup()setx(randint(-350,350))sety(randint(1,270))pendown()dens randint(8,12)snowsize randint(10,14)for j in range(dens):forward(snowsize)backward(snowsize)right(360/dens)
def drawGround():hideturtle()for i in range(400):pensize(randint(5,10))x randint(-400,350)y randint(-280,-1)r, g, b -y/280, -y/280, -y/280pencolor((r,g,b))penup()goto(x,y)pendown()forward(randint(40,100))
setup(800,600,200,200)
tracer(False)
bgcolor(black)
drawSnow()
drawGround()
done()小结
本次主要讲解了3个重要的Python标准库turtle、random和time分别用于基本图形绘制、随机数运用和时间处理。再详细讲解各函数库功能基础上通过雪景随机艺术画的绘制进一步帮助读者掌握这三个有趣且有用的标准库。
能够用Python绘图了最想绘制的图形是什么最想送给谁