二级Python学习笔记(九)

上一篇:二级Python学习笔记(八)

距离上一篇已经过去大半个月了,明天我都要考试了,才勉强把这最后一篇更完,想想惭愧。这期间也做了不少题,不知道会不会考原题,今天第一天考的童鞋在群里说挺难,再发篇博客攒攒人品吧......为日后考试的小伙伴们提供一点便利,记住多学多练,加油!

最后三章一起了,还以为我一章一篇博客呢,怎么可能这么轻易被猜透?

**************************比第一篇华丽的分割线****************************

第9章 Python标准库概览

9.1 turtle库概述

turtle库:Python重要的标准库之一,进行基本的图形绘制。

三种引入方式:

import turtle
turtle.circle(200)

from turtle import *
circle(200)

import turtle as t
t.circle(200)

9.2 turtle库与基本绘图

窗体函数:

turtle.setup(width, height, startx, starty)

作用:设置主窗体的大小和位置
参数:
width :窗口宽度,如果值是整数,表示的像素值;如果值是小数,表示窗口宽度与屏幕的比例;
height: 窗口高度,如果值是整数,表示的像素值;如果值是小数,表示窗口高度与屏幕的比例;
startx:窗口左侧与屏幕左侧的像素距离,如果值是None,窗口位于屏幕水平中央;
starty:窗口顶部与屏幕顶部的像素距离,如果值是None,窗口位于屏幕垂直中央;

画笔状态函数:

画笔运动函数:

9.3 random库概述

random库:生成随机数。

9.4 random库与随机数运用

常用函数:

随机数种子:准确复现随机数序列,用于重复程序的运行轨迹。如果没有设置,默认以当前系统的运行时间为种子产生随机序列。

9.5 time库概述

time库:时间处理、时间格式化和计时。可以用来分析程序性能,也可让程序暂停运行时间。

时间处理:time.time()、time.gmtime()、time.localtime() 、time.ctime()。
时间格式化:time.mktime()、time.strftime()、time.strptime()。
计时:time.sleep()、time.monotonic()、time.perf_counter()

#使用time.time()获取当前时间戳
>>>import time
>>>time.time()
1516939876.6022282

#使用time.gmtime(secs)获取当前时间戳对应的struct_time对象
>>> time.gmtime(now)
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=4, tm_min=11, tm_sec=16, tm_wday=4, tm_yday=26, tm_isdst=0)

#使用time.localtime(secs)获取当前时间戳对应的本地时间的struct_time对象
#注意结果与gmtime的区别,UTC时间已自动转换为北京时间
>>> time.localtime(now)
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=12, tm_min=11, tm_sec=16, tm_wday=4, tm_yday=26, tm_isdst=0)

#使用time.ctime(secs)获取当前时间戳对应的易读字符串表示,内部会调用time.localtime()函数以输出当地时间。
>>> time.ctime(now)
'Fri Jan 26 12:11:16 2018'

调用time.mktime(t)函数
>>> t = time.localtime(now)
>>> time.mktime(t)
1516939876.0
>>> time.ctime(time.mktime(t))
'Fri Jan 26 12:11:16 2018'

time.strftime()函数是时间格式化最有效的方法,几乎可以以任何通用格式输出时间。该方法利用一个格式字符串,对时间格式进行表达。
>>> lctime = time.localtime()
>>> lctime
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=12, tm_min=55, tm_sec=20, tm_wday=4, tm_yday=26, tm_isdst=0)
>>> time.strftime("%Y-%m-%d %H:%M:%S", lctime)
'2018-01-26 12:55:20'

strptime()方法与strftime()方法完全相反,用于提取字符串中时间来生成strut_time对象,可以很灵活的作为time模块的输入接口
>>> timeString = '2018-01-26 12:55:20'
>>> time.strptime(timeString, "%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=12, tm_min=55, tm_sec=20, tm_wday=4, tm_yday=26, tm_isdst=-1)

strftime()方法的格式化控制符:

9.6 time库与程序计时

以1千万次循环为主体,模拟实际程序的核心模块,用time.sleep()来模拟实际程序的其他模块。

import time
def coreLoop():
    limit = 10**8
    while (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 - startPerfCounter
    coreLoop()
    coreLoopPerfCounter = time.perf_counter()
    coreLoopPerf = coreLoopPerfCounter - otherLoop1PerfCounter
    otherLoop2()
    otherLoop2PerfCounter = time.perf_counter()
    otherLoop2Perf = otherLoop2PerfCounter - coreLoopPerfCounter
    endPerfCounter = time.perf_counter()
    totalPerf = endPerfCounter - startPerfCounter
    endTime = 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:45


第10章 Python第三方库概览

10.1 Python第三方库的获取和安装

三个方法:pip工具安装、自定义安装和文件安装。

pip工具安装:最高效,最主要。pip install <拟安装库名>

自定义安装:按照第三方库提供的步骤和方式安装。以科学计算用的numpy为例,开发者维护的官方主页是:http://www.numpy.org/浏览该网页找到下载链接,如下:http://www.scipy.org/scipylib/download.html进而根据指示步骤安装。

文件安装:为了解决这类第三方库安装问题,美国加州大学尔湾分校提供了一个页面,帮助Python用户获得Windows可直接安装的第三方库文件,http://www.lfd.uci.edu/~gohlke/pythonlibs/

pip工具使用:

#列出pip常用的子命令
pip -h

#安装
pip -install

#下载不安装
pip -download

#卸载
pip -uninstall

#列出当前系统中已经安装的第三方库
pip -list

#联网搜索库名或摘要中关键字
pip -search

#列出某个已经安装库的详细信息
pip show

10.2 PyInstaller库概述

PyInstaller库:将Python源文件打包,变成直接可运行的可执行文件

10.3 PyInstaller库与程序打包

#对Python源文件打包
:\>PyInstaller #对Python源文件生成一个独立的可执行文件
:\>PyInstaller -F

常用参数:

10.4  jieba库概述

jieba库:中文分词。

精确模式,将句子最精确地切开,适合文本分析。

全模式,把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义。

搜索引擎模式,在精确模式基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

10.5 jieba库与中文分词

jieba.lcut(s) 用于精准模式,将字符串分割成等量的中文词组,返回结果是列表类型
>>>import jieba
>>>ls = jieba.lcut("全国计算机等级考试Python科目")
>>>print(ls)
['全国', '计算机', '等级', '考试', 'Python', '科目']

jieba.lcut(s, cut_all = True)用于全模式,即将字符串的所有分词可能均列出来,返回结果是列表类型,冗余性最大。
>>>import jieba
>>>ls = jieba.lcut("全国计算机等级考试Python科目", cut_all=True)
>>>print(ls)
['全国', '国计', '计算', '计算机', '算机', '等级', '考试', 'Python', '科目']

jieba.lcut_for_search(s)返回搜索引擎模式,首先执行精确模式,然后再对其中长词进一步切分获得最终结果。
>>>import jieba
>>>ls = jieba.lcut_for_search("全国计算机等级考试Python科目")
>>>print(ls)
['全国', '计算', '算机', '计算机', '等级', '考试', 'Python', '科目']

jieba.add_word()函数,向jieba词库增加新的单词。
>>>import jieba
>>>jieba.add_word("Python科目")
>>>ls = jieba.lcut("全国计算机等级考试Python科目")
>>>print(ls)
['全国', '计算机', '等级', '考试', 'Python科目']

10.6 wordcloud库概述

worldcloud库:根据文本生成词云。

10.7 wordcloud库与可视化词云

import jieba
from wordcloud import WordCloud
txt = '程序设计语言是计算机能够理解和识别用户操作意图的一种交互体系,它按照特定规则组织计算机指令,使计算机能够自动进行各种运算处理。'
words = jieba.lcut(txt)        # 精确分词
newtxt = ' '.join(words)       # 空格拼接
wordcloud = WordCloud(font_path="msyh.ttc").generate(newtxt) 
wordcloud.to_file('词云中文例子图.png')        # 保存图片

WordCloud对象创建的常用参数:


第11章 Python第三方库纵览

11.1 网络爬虫方向

requests、scrapy

11.2 数据分析方向

numpy、scip、pandas

11.3 文本处理方向

pdfminer、openpyxl、python-docx、beautifulsoup4

11.4 数据可视化方向

matplotib、TVTK

11.5 用户图形界面方向

pyqt5、wxpython、pygtk

11.6 机器学习方向

Scikit-learn、TensorFlow、Theano

11.7 Web开发方向

Django、Pyramid、Flask

11.8 游戏开发方向

Pygame、Panda3D、cocos2d

11.9 更多第三方库

PIL:图像处理
SymPy:支持符号计算
NLTK:自然语言处理(尤其对中文支持良好)
WeRoBot:微信公众号开发框架
MyQR:生产二维码


最后扯两句,学习是好事,但是要劳逸结合,年轻不是资本,早睡早起身体好。祝大家逢考必过!

lws博客
评论功能尚未完善
  • 最新评论
  • 总共0条评论
  • 个人开源博客网站 © 2017-2019 李维山博客 版权所有 备案号:冀ICP备18008903号-1
  • 联系邮箱:666@oyhdo.com