python学习笔记(慕课上嵩天老师的Python语言程序设计所做的笔记)

在这里做笔记录下课程中,对我有用的一些知识点,先按照时间顺序这么记下来,有空了再做个整理吧

小技巧 

所有使用pip安装某程序的命令,后面加-i https://pypi.doubanio.com/simple/ 下载速度更快,其中这个地址是国内镜像网站的地址,可以替换成其他镜像网站

缩进

表示程序的格式框架,表达了包含和层次关系

注释

以#号开头的单行注释,或以’’’和’’’包含的多行注释

变量命名

字母、数字、下划线和中文组合;首字符不能是数字、名字不能与保留字相同

python保留字

字符串

双引号和单引号都一样 

字符串序号体系:有正向0开始和反向-1开始 

字符串切片:[0:3],从0个开始,不到第3个

输入:input(“提示信息”)

输出:print(“sss”),格式化输出print(“dd{:.2f}d”.format(c)),大括号会被替换

评估函数

eval() 把参数中的最外侧引号去掉

数据类型

浮点数:

存在范围限制,取值范围-10307到10308,经度到10-16,因此可以忽略;

一般在16位上,开始可能存在不确定尾数,使用round(x,d)函数进行四舍五入后再比较大小

Round(x,d) d是小数截取位数

复数类型:

J = 更号下-1

复数类型分为实部和虚部

z.real 获取实部

z.imag 获取虚部

运算符

/号:返回浮点数结果;//号,返回整除结果

** 号:幂运算,x**y

不同类型混合运算,结果为最宽的类型,整数<浮点<复数

运算函数

 abs() 求绝对值

divmod(x,y) 商余 ,同时求x/y的商和余,输出(商,余)

pow(x,y[,z])  x**y%z ,z可省略

round(x[,d]) 四舍五入 d是保留小数位数

max(x,y,z,…) 求最大值

min(x,y,z,…) 求最小值

int() 转为整数,舍弃小数部分(不是四舍五入),参数可以是字符串

float() 转为浮点数,参数可以是字符串

complex() 转为复数

定义一个函数 

def <函数名>(<参数>):

<函数体>

return <返回值>

return语句不是必须的。

  1. 可选参数

可以设置可选参数,必须放在非可选参数之后。

def fact(x,y=1):

y就是可选参数

  1. 可变参数

*b:表示参数的数量可变,类似一个数组

  1. 参数传递的方式

按位置或名称传递,位置传递按照位置对应传递,而名称传递要显示指定名称和值,m=1 ,n=2

  1. 返回值

可以返回任意数量的值,返回多个类似于元组类型(1,2,3)。

  1. 局部变量和全局变量

函数内部定义的变量,是局部变量;

在函数体内部想使用全局变量,要使用global关键字声明变量;

局部变量若为组合数据类型且未使用[]来真实创建的话,视为全局变量。

  1. lambda函数

是一种匿名函数,用于定义简单的,能够在一行内表达的函数

<函数名> = lambda<参数>:<表达式>

主要用于作一些特定函数或方法的参数,一般情况下不建议使用

字符串

三引号也是字符串,如果没有被使用,就变成了多行注释;

双引号引起来的中间的单引号就是作为字符输出,反之亦然;

如果即希望输出单引号又希望输出双引号,就用三引号括起来;

字符串切片高级用法:[M:N:K] K表示步长,M和N缺失表示到头;

字符串逆序用[::-1]

  • 特殊字符:

\b表示回退

\n表示换行

\r表示光标移回行首

  • 字符串操作符:

N*x 复制N字符串X次;

X in s  判断X是否是s的子串

len()返回长度

str() 任意类型转为字符串

hex() 或 oct() 整数转为16进制或8进制小写形式

  • 字符串处理函数

chr(x): x为unicode编码,返回对应字符

ord(x): x为字符,返回unicode编码

  • 字符串处理方法

方法特指a.b的方式

lower()或.upper() 返回全小写或全大写

split(sep =none) 返回字符被以sep分割的子串

count(sub)返回子串sub在字符串中出现的次数

replace(old,new) 所有old子串被替换为new,要注意,replace不会改变原来字符串的内容

center(width[,fillchar]) 根据宽度居中,两边用fillchar来填充,缺省为空格

strip(chars) 从两侧去掉chars中的字符

join(iter) 给每个字符中间插入一个iter字符

  • 字符串格式化

str.format()

“{1}dd{2}dd{3}”.format(“qq”,”ww”,20) 前面字符串中的占位符中的参数序号可以调换顺序

槽中的格式:{:<填充> <对齐> <宽度> <,千位分隔符> < . 精度数字>  <类型>}

填充:用于填充的单个字符

对齐:<左对齐 ^居中 >右对齐

宽度:槽设定的输出宽度

类型:b c d o x X e E f %

time库

  1. 用法

import time

time.xxx()

  1. 时间获取

time() 获取计算机内部时间值 是一个浮点数,以秒为单位

ctime() 获取时间,字符串形式,易读

gmtime() 获取时间,返回内部时间变量类型

  1. 时间格式化

strftime(tpl,ts)

tpl是格式化模板字符串,定义了输出效果,ts是时间变量类型(即用gmtime()获得的时间)

  1. 格式化字符串

strptime(str,tpl) 从字符串中解析出时间变量

str是字符串形式时间,tpl 是格式化输入

返回一个时间变量

  1. 程序计时

perf_counter() 测量时间,两次调用的差值

sleep() 停止

程序分支结构

  1. 紧凑形式的二分支结构

<表达式1> if  <条件> else <表达式2>

条件组合

  1. and 逻辑与
  2. or 逻辑或
  3. not 逻辑非

异常处理

  1. 基本用法

try:

except[异常类型]:

try中语句发生异常,执行except中的语句

  1. 高级用法

try:

      <语句块1>

except:

      <语句块2>

else:

<语句块3>

finally:

      <语句块4>

else对应语句块3在不发生异常时执行;

finally对应语句块4一定执行;

循环

  1. 遍历循环

for <循环变量> in <遍历结构>:

从遍历结构提取元素,放到循环变量中。

range(N,M,K):表示从N开始,不到M,步长为K,产生一个列表。

遍历结构可以放一个列表,遍历列表每个元素;

放一个文件标识符,遍历每一行;

  1. 无限循环

while <条件>:

反复执行,直到条件不满足;

  1. 循环控制保留字

break 和continue

  1. 循环高级用法

for in :

else:

while :

else:

else的语句块在循环没有被break退出时执行

random库

伪随机数,采用梅森旋转算法生成的伪随机序列中的元素。

  • 基本随机数函数

seed() 设置种子,不设seed时,默认使用第一次random时的系统时间作为种子

random()获得0-1之间的随机小数

  • 扩展随机数函数

randint(a,b) 生成一个a到b之间的整数

randrange(m,n[,k]) 生成一个M到N之间以K为步长的随机整数

getrandbits(k) 生成K比特长度的随机整数

uniform(a,b) 生成a到b之间随机小数

choice(seq) 从序列seq中随机选择一个元素

shuffle(seq) 将seq中元素随机排序(seq本身被打乱了)

代码复用与函数递归

  1. 递归的定义

两大关键特征:链条和基例

pyinstaller库的使用

将源码转换为可执行文件。

使用pip install pyinstaller安装;

pyinstaller -F <文件名.py>

集合类型

集合类型定义

  • 与数学概念中的集合一致,是多个元素的无序组合,每个元素唯一
  • 集合元素不可更改,不能是可变数据类型
  • 用{}表示,元素间用逗号分隔
  • 建立集合用{} 或 set()
  • 建立空集合必须用set()

集合操作符

 

集合处理方法

 应用场景

  • 包含关系比较
  • 数据去重

序列类型

定义

  • 一维元素向量,元素类型可以不同
  • 由序号引导,与字符串的序号规则一致
  • 序列类型细分为:字符串、元组、列表

序列处理函数及方法

 

sort()方法,可用于排序,

参数 :

  1. key= lambda x:x[0] 用于说明使用那个元素进行排序
  2. reverse=true 反序

 元组类型

  • 一旦创建,不可修改
  • 使用 () 或tuple()创建,元素用逗号分隔
  • 小括号可以省略

元组类型操作

继承了序列全部通用操作

列表类型

有顺序,创建后可以随意修改

使用[]或list()创建

元素可以相同或不同,无长度限制

列表操作函数和方法

 

 字典类型

定义

  • 一种映射关系,即键值对,key和value的一一对应
  • 键是索引的一种扩展
  • 键值对之间是无序的
  • 采用{}或dist()创建,键值对用冒号表示

用法

通过键获取值:value = d[key]

增加值:d[key] = value

操作函数和方法

 

 jieba库的使用

jieba库是优秀的中文分词第三方库,用于将中文文本分成单个的词语

使用 pip install jieba 来安装

最常用的精确模式,jieba.lcut(),返回一个列表

文件操作

文件的理解

本质上所有文件都是二进制形式存储

形式上有文本和二进制形式展示

文件的打开和关闭

f = open(<文件名>,<打开模式>)

opeen函数用于打开文件

f.close()

close()函数用于文件关闭

有打开就有关闭,不要忘了close

文件读取

还可以用

for line in file:
    line...

的方式去编译一个文件,读取每一行

文件的写入 

 一位数据的格式化和处理

数据维度的概念

一维数据:有序或无序的线性方式组织的数据,对应列表、数组、集合等概念

二维:二维数据是一维数据的组合,典型的比如表格

一维数据的存储

  • 以空格分隔进行存储,不换行,缺点是数据中本身不能存在空格
  • 以逗号进行分隔,不换行,缺点是数据中本身不能存在逗号、

一维数据的读取

用split()函数对数据进行分隔,变为列表

一维数据的写入

一个列表,使用

"<分隔符>".join(list)

的方式进行处理,使其变为由分隔符分隔的数据,再写入文件

二维数据格式化和处理

通常使用二维列表进行表示,即外层列表的元素本身也是一个列表

csv数据存储格式

csv是一个国际通用的一二维数据存储格式,以.csv为后缀

每行一个一维数据,用逗号分隔,无空行

excel等通常都可以读取csv文件

某个元素缺失,逗号必须要保留

一般索引习惯,先行后列

二维数据读入处理

fo = open(name)
ls = []
for line in fo:
    line = line.replace("\n","")    #去掉每行数据最后的换行符
    ls.append(line.split(","))    #,每行按逗号分隔为列表
fo.close()

写入处理

ls = [[],[],[]]    #一个二维列表
f = open(name,'w')    #写形式打开文件
for item in ls:
    f.write(",".join(item) + "\n")    #以逗号分隔元素返回一个字符串,再在末尾加换行符
f.close()

遍历

用一个二层循环来挨个遍历

wordcloud库的使用

概述

wordcloud是一个优秀的词云展示第三方库

可以做这种图

 安装使用

pip install wordcloud 

使用

w = wordcloud.WordCloud(<参数>)

获得一个词云对象

配置对象参数

 

 

 

传递给mask的图片,必须要是一个白底的,具有某些形状的图片,比如

 常规方法

自顶向下和自底向上

  • 自顶向下:分而治之
  • 自底向上:模块化集成

计算思维

抽象问题的计算过程,利用计算机自动求解

计算思维是基于计算机的思维方式

python的第三方库

Python社区

https://pypi.org/

安装方法

  • pip install <库名称>

这个最常用,速度慢的话可以更换镜像网站的地址,见小技巧

  • 集成安装方法

anaconda

  • 第三方库文件安装方法

UCI页面: https://www.lfd.uci.edu/~gohlke/pythonlibs/

官方中文文档

https://docs.python.org/zh-cn/3/

OS库的使用

基本介绍

提供通用的、几百根的操作系统交互功能,支持windows、MAC、linux

包含常用路径操作、进程管理、环境参数等

路径操作

使用os.path子库进行操作

import os.path

 

 进程管理

 os.system(command)

执行command命令

环境参数

从数据处理到人工智能

python库之数据分析

python库之数据可视化

  • Matplotlib: 高质量的二维数据可视化功能库
  • Seaborn: 统计类数据可视化功能库
  • Mayavi:三维科学数据可视化功能库

Python库之文本处理

  • PyPDF2: 用来处理pdf文件的工具集
  • NLTK: 自然语言文本处理第三方库
  • Python-docx: 创建或更新Microsoft Word文件的第三方库

Python库之机器学习

  • Scikit-learn: 机器学习方法工具集
  • TensorFlow: AlphaGo背后的机器学习计算框架
  • MXNet:基于神经网络的深度学习计算框架

从Web解析到网络空间

Python库之网络爬虫

  • Requests: 最友好的网络爬虫功能库,Python最主要的页面级网络爬虫功能库
  • Scrapy: 优秀的网络爬虫框架,提供了构建网络爬虫系统的框架功能,Python最主要且最专业的网络爬虫框架
  • pyspider: 强大的Web页面爬取系统,提供了完整的网页爬取系统构建功能

Python库之Web信息提取

  • Beautiful Soup: HTML和XML的解析库
  • Re: 正则表达式解析和处理功能库,Python最主要的标准库之一,无需安装
  • Python-Goose: 提取文章类型Web页面的功能库

Python库之Web网站开发

  • Django: 最流行的Web应用框架,MTV模式:模型(model)、模板(Template)、视图(Views)
  • Pyramid: 规模适中的Web应用框架,适合快速构建并适度扩展类应用,Python产品级Web应用框架,起步简单可扩展性好
  • Flask: Web应用开发微框架,特点是:简单、规模小、快速

Django > Pyramid > Flask

Python库之网络应用开发

  • WeRoBot: 微信公众号开发框架,提供了解析微信服务器消息及反馈消息的功能,建立微信机器人的重要技术手段
  • aip: 百度AI开放平台接口,访问百度AI服务的Python功能接口
  • MyQR: 二维码生成第三方库,基本二维码、艺术二维码和动态二维码

从人机交互到艺术设计

Python库之图形用户界面

  • PyQt5: Qt开发框架的Python接口
  • wxPython: 跨平台GUI开发框架
  • PyGObject: 使用GTK+开发GUI的功能库

Python库之游戏开发

  • PyGame: 简单的游戏开发功能库,Python游戏入门最主要的第三方库
  • Panda3D: 开源、跨平台的3D渲染和游戏开发库,一个3D游戏引擎,提供Python和C++两种接口
  • cocos2d: 构建2D游戏和图形界面交互式应用的框架,基于OpenGL的游戏开发图形渲染功能,适用于2D专业级游戏开发

Python库之虚拟现实

  • VR Zero: 在树莓派上开发VR应用的Python库,非常适合初学者实践VR开发及应用
  • pyovr: Oculus Rift的Python开发接口,针对Oculus VR设备的Python开发库
  • Vizard: 基于Python的通用VR开发引擎,支持多种主流的VR硬件设备,具有一定通用性

Python库之图形艺术

  • Quads: 迭代的艺术,对图片进行四分迭代,形成像素风
  • ascii_art: ASCII艺术库,将普通图片转为ASCII艺术风格
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值