Python学习笔记—常用库简介

Turtle库:

Turtle库是Python语言中一个很流行的绘制图像的函数库。

常用turtle功能函数:

函数 含义
turtle.bgcolor(“red”) 设置画面背景颜色
turtle.setup(width = 200,height = 200,startx = 0,starty = 0) 设置窗口大小和在屏幕上的坐标
turtle.bgpic(“1.gif”) 设置背景图片,只支持gif格式
turtle.onscreenclick(x,y) 用户点击屏幕时获得笔的坐标,制作app时响应用户的点击操作
turtle.bye() 退出turtle,无任何提示信息
turtle.exitonclick() 点击后退出turtle
turtle.done() 关闭turtle,一般在使用完turtle后添加,否则会无响应
turtle.Pen() 启用画笔
turtle.Pen().color(“cc4455”) 画笔颜色设置
turtle.Pen().forward(2) 画笔前进长度,以像素为单位
turlte.Pen().backward(2) 画笔后退长度
turtle.Pen().home() 画笔初始位置
turtle.Pen().left(90) 画笔向左转
turtle.Pen().right(90) 画笔向右转
turtule.width(3) 设置画笔宽度,以像素为单位
t = turtle.Pen() 让t代表turtle.Pen(),简化代码
t.penup() 抬起笔,停止写
t.pendown() 放下笔,开始写
t.write(“Python”,font=(“Arial”,”23”,”bold”)) 写指定内容“Python”,并设置字体,字号,加粗
t.circle(4) 以参数为半径画圆
t.dot(4) 以参数为直径画点
t.postion() 笔的坐标
t.heading() 笔的朝向
t.setx(position[0]) 设置笔的x坐标为position记录的x坐标,position由position = t.position()获得
t.sety(Position[1]) 设置笔的y坐标
t.setheading(30) 设置笔的朝向,画笔默认向右为正方向
t.setpos(x,y) 设置笔的坐标
t.fillcolor(“red”) 设置填充颜色
t.begin_fill() 开始填充
t.circle(5) 画圆填充
t.end_find() 填充结束
t.goto(x,y) 笔移动到坐标(x,y)
t.speed(1) 笔的移动速冻,参考范围0.5-10,范围之外为0,最快,不设置为最慢
t.hideturtle()/t.showturtle() 隐藏画笔/显示画笔
t.reset() 删除画的内容,还原画笔参数初始值
t.clear() 删除画的内容,不修改画笔参数

蟒蛇绘制实例:

程序代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import turtle

def drawSnake(rad, angle, len, neckrad):
for i in range(len):
turtle.circle(rad, angle)
turtle.circle(-rad, angle)
turtle.circle(rad, angle/2)
turtle.fd(rad)
turtle.circle(neckrad+1, 180)
turtle.fd(rad*2/3)

def main():
turtle.setup(1300, 800, 0, 0)
pythonsize = 30
turtle.pensize(pythonsize)
turtle.pencolor("blue")
turtle.seth(-40)
drawSnake(40, 80, 5, pythonsize/2)

main()

turtle.pensize()函数表示小乌龟运动轨迹的宽度。它包含一个输入参数,这里我们把它设为30像素,用pythonsize变量表示。

turtle.pencolor()函数表示小乌龟运动轨迹的颜色。

turtle.seth(angle)函数表示小乌龟启动时运动的方向。他包含一个输入参数,是角度值。其中,0表示向东,90度向北,180度向西,270度向南。负值表示相反的方向。

main()函数给出了小乌龟爬行的窗体大小,爬行轨迹颜色和宽度以及初始爬行的方位。

turtle.circle()函数让小乌龟沿着一个圆形爬行。参数rad描述圆形轨迹半径的位置。

参数angle表示小乌龟沿着圆形爬行的弧度值。

turtle.fd()函数表示乌龟向前直线爬行移动。

程序运行结果:

蛇

图: 程序运行结果图

math库:

math库中常用的数学函数:

函数 含义
圆周率pi ∏的近似值,15位小数
自然数e e的近似值,15位小数
ceil(x) 对浮点数向上取整
floor(x) 对浮点数向下取整
pow(x,y) 计算x的y次方
log(x) 以e为基的对数
log10(x) 以10为基的对数
sqrt(x) 平方根
exp(x) e的x次幂
degress(x) 将弧度值转换成角度
radians(x) 将角度值转换位弧度值
sin(x) 正弦函数
cos(x) 余弦函数
tan(x) 正切函数
asin(x) 反正弦函数
acos(x) 反余弦函数
atan(x) 反正切函数

random库:

random库为随机数库。

random库中常用的函数:

函数 含义
seed(x) 给随机数一个种子值,默认随机种子是系统时钟
random() 生成一个[0,1.0)之间的随机小数
uniform(a,b) 生成一个a到b之间的随机小数
randint(a,b) 生成一个a到b之间的随机整数
randrange(a,b,c) 随机生成一个从a到b以c递增的数
choice(< lsit >) 从列表中随机返回一个元素
shuffle(< list > ) 键列表中的元素随机打乱
sample(< list >, k) 从指定列表随机获取k个元素

随机数库及其使用:

  • 因为计算机是一个确定设备,不能生成真正的随机数。所以一个,由计算机产生的随机数都是由一个种子开始的伪随机序列。
  • 相同的随机种子,产生相同的伪随机序列,也有利于程序的执行验证。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> from random import *
>>> seed(10)
>>> random() #生成随机数
0.5714025946899135
>>> uniform(1,10) #生成1-10的随机小数
4.860001492076032
>>> randint(1,10) #生成1-10的随机整数
10
>>> randrange(1,10,2) #生成从1开始到10以2递增的数
1
>>> randrange(1,10,2)
3
>>> vlist = [1,2,3,4,5]
>>> choice(vlist) #从列表中随机返回一个元素
4
>>> shuffle(vlist) #将列表中元素随机打乱
>>> vlist
[2, 1, 5, 3, 4]
>>> sample(vlist,2) #随机获取列表中2个元素
[2, 3]
>>>

math库与random库的使用实例:

圆周率π的计算:

圆周率π是一个无理数,没有任何一个精确公式能够计算,π的计算只能采用近似法。

国际公认的PI值计算采用蒙特卡洛方法。又称为随机抽样或统计实验方法。

应用蒙特卡洛方法:首先构造一个单位正方形和1/4圆。

随机向单位正方形和圆结构抛洒大量点,对于每个点,可能在圆内或者圆外,当随机抛点数量达到一定程度,圆内点将构成圆的面积,全部抛点将构成矩形面积。圆
内点数除以圆外点数就是面积之比,即π/4。随机点数越大,得到的π值越精确。

π计算问题的IPO表示如下:

  • 输入:抛点的数量
  • 处理:对于每个抛洒点,计算点到圆心的距离,通过距离判断该点在圆内或是圆外。统计在圆内点的数量
  • 输出:π值

程序代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pi.py
from random import random
from math import sqrt
from time import clock
DARTS = 12000000 #定义投掷的数量
hits = 0 #用来存放投到圆内得数量
clock() #获取程序开始时的时间
for i in range(1,DARTS): #模拟循环进行投掷
x, y = random(), random() #获得随机坐标
dist = sqrt(x**2 + y**2) #点到原点的距离
if dist <= 1.0: #如果距离<=1,hits加1
hits = hits + 1
pi = 4 * (hits/DARTS)
print("Pi的值是%s"% pi)
print("程序运行的时间是 %-5.5ss" % clock())


#程序执行结果:
#===================== RESTART: D:/我的文件/Python程序/π的计算.py =====================
Pi的值是3.1420456666666667
程序运行的时间是 13.67s
>>>

OS库常用函数

  1. os.getcwd() 获得当前路径
  2. os.listdir(path) 获得目录中的内容
  3. os.mkdir(path) 创建目录
  4. os.rmdir(path) 删除目录
  5. os.isdir(path) os.isfile(path) 判断是否为目录或者文件
  6. os.remove(path) 删除文件
  7. os.rename(old, new) 重命名文件或者目录
  8. os.name 输出字符串指示正在使用的平台。如果是window 则用’nt’表示,对于Linux/Unix用户,它是’posix’
  9. os.system() 运行shell命令
  10. os.path.split() 返回一个路径的目录名和文件名
  11. os.path.splitext() 分离文件名与扩展名
  12. os.path.getsize(name) 获得文件大小,如果name是目录返回0L
  13. os.getegid() 返回当前进程(process)所属的有效group id 只有unix可用
  14. os.geteuid() 返回当前进程所属的用户ID (Unix)
  15. os.getgid() 返回当前进程所属的真实组ID(real group id)
  16. os.getlogin() 返回当前登陆用户名
  17. os.getpgrp() 返回当前进程组的ID(Unix)
  18. os.getpid() 返回当前进程的PID,( Unix, Windows )
  19. os.getppid() 返回当前进程父进程的ID(Unix)
  20. os.getuid() 返回当前进程所属用户ID(Unix)

random库

  1. random.random()

    生成一个0到1之间的随机浮点数,包括0但不包括1,也就是[0.0, 1.0)。

  2. random.uniform(a, b)

    生成a、b之间的随机浮点数。不过与randint不同的是,a、b无需是整数,也不用考虑大小。

  3. random.choice(seq)

    从序列中随机选取一个元素。seq需要是一个序列,比如list、元组、字符串。

    random.choice([1, 2, 3, 5, 8, 13]) #list

    random.choice(‘hello’) #字符串

    random.choice([‘hello’, ‘world’]) #字符串组成的list

    random.choice((1, 2, 3)) #元组

    都是可行的用法。

  4. random.randrange(start, stop, step)

    生成一个从start到stop(不包括stop),间隔为step的一个随机数。start、stop、step都要为整数,且start<stop。

  5. random.sample(population, k)

    从population序列中,随机获取k个元素,生成一个新序列。sample不改变原来序列。

  6. random.shuffle(x)

    把序列x中的元素顺序打乱。shuffle直接改变原有的序列。

  7. seed()方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数, 注意其实是伪随机数,只要初始值一样,得到的结果会是一样的,在python中,默认用系统时间作为seed。你也可以手动调用random.seed(x)来指定seed。

datetime库

datetime模块定义了5个类,分别是

  1. datetime.date:表示日期的类
  2. datetime.datetime:表示日期时间的类
  3. datetime.time:表示时间的类
  4. datetime.timedelta:表示时间间隔,即两个时间点的间隔
  5. datetime.tzinfo:时区的相关信息

datetime.date类:

date类有三个参数,datetime.date(year,month,day),返回year-month-day

方法:

  1. datetime.date.ctime(),返回格式如 Sun Apr 16 00:00:00 2017
  2. datetime.date.fromtimestamp(timestamp),根据给定的时间戮,返回一个date对象;datetime.date.today()作用相同
  3. datetime.date.isocalendar():返回格式如(year,month,day)的元组,(2017, 15, 6)
  4. datetime.date.isoformat():返回格式如YYYY-MM-DD
  5. datetime.date.isoweekday():返回给定日期的星期(0-6),星期一=0,星期日=6
  6. datetime.date.replace(year,month,day):替换给定日期,但不改变原日期
  7. datetime.date.strftime(format):把日期时间按照给定的format进行格式化。
  8. datetime.date.timetuple():返回日期对应的time.struct_time对象
  1. datetime.date.weekday():返回日期的星期

datetime.time类:

time类有5个参数,datetime.time(hour,minute,second,microsecond,tzoninfo),返回08:29:30

  1. datetime.time.replace()
  2. datetime.time.strftime(format):按照format格式返回时间
  3. datetime.time.tzname():返回时区名字
  4. datetime.time.utcoffset():返回时区的时间偏移量

datetime.datetime类:

datetime类有很多参数,datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]),返回年月日,时分秒

  1. datetime.datetime.ctime()
  2. datetime.datetime.now().date():返回当前日期时间的日期部分
  3. datetime.datetime.now().time():返回当前日期时间的时间部分
  4. datetime.datetime.fromtimestamp()
  5. datetime.datetime.now():返回当前系统时间
  6. datetime.datetime.replace()
  7. datetime.datetime.strftime():由日期格式转化为字符串格式
  8. datetime.datetime.strptime():由字符串格式转化为日期格式

datetime.timedelta类:

  1. datetime.datetime.timedelta用于计算两个日期之间的差值,

datetime.datetime.strptime():由字符串格式转化为日期格式

坚持原创技术分享,您的支持将鼓励我继续创作!