python学习笔记-基础版

Posted 小王不叫小王叭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记-基础版相关的知识,希望对你有一定的参考价值。

     零基础学python过程中自己记录的学习笔记,基本函数和方法,供学习参考

python学习笔记

一、基本数据类型

1、数值运算函数


2、字符串

2.1、字符串操作处理

切片:[m:n:k] m起始下标,n结束下标(不包括),k步长

​ x + y :连接连个字符串

​ x * n :复制n次字符串x

​ x in s :如果x是s子串,则返回true,否则返回false

​ len(x) :长度,返回字符串x的长度

len("123456")    # 6

​ hex(x) 或 oct(x) :整数x的十六进制或八进制小写形式字符串

hex(425)	# "0x1a9"

oct(425)	# "0o651"

​ chr(u) :u为Unicode编码,返回其对应的字符

​ ord(x) :x为字符,返回其对应的Unicode编码

2.2、字符串处理方法

​ 方法必须用.来进行执行

​ str.lower() 或 str.upper() :返回字符串的副本,全部为小写/大写

​ str.split(sep=None) :返回一个列表,由str通过sep被分割的部分组成

"A,B,C".split(",")	# ['A','B','C']

​ str.count(s) :返回一个数字,计算str中s的个数

​ str.replace(old,new) :返回字符串str副本,所有old子串替换为new新串

​ str.strip(chars) :从str中去掉在其左侧和右侧chars中列出的字符

​ str.rstrip(chars) :从str中去掉其右侧chars中列出的字符

​ str.join(s) :将str插入到字符串s中

','.join("12345")	# 1,2,3,4,5

2.3、字符串类型的格式化

​ “ ”.format(x,y)

3、time库的使用

time库是python中处理时间的库函数

import time
time.<b>()

3.1、时间获取函数

​ time() :获取当前的时间戳,表示从1970.01.01到当前时间为止,单位为秒

time.time()	#1649499510.9574826

​ ctime() :获取当前时间并以易读的方式返回,返回字符串

time.ctime()	#Sat Apr  9 18:18:45 2022

​ gmtime() :获取当前时间,以一种计算机可以处理的格式返回

time.getime()	#time.struct_time(tm_year=2022, tm_mon=4, tm_mday=9, tm_hour=10, tm_min=20, tm_sec=48, tm_wday=5, tm_yday=99, tm_isdst=0)

3.2、时间格式化

​ strftime(tpl,ts) :tpl是格式化模板字符串,用来定义输出效果,ts是计算机内部时间类型变量

t = time.gmtime()
time.strftime("%Y-%m-%d %H:%M:%S",t)
#输出2022-04-09 10:30:17

​ strptime(str,tpl) :str是字符串形式的时间值,tpl是格式化模板字符串

3.3、程序计时

​ 程序计时指测量起止动作所经历时间的过程

​ 测量时间:perf_counter()

start = time.perf_counter()
end = time.perf_counter()
x = end - start
print(x)

​ 产生时间,休眠:sleep() 单位为秒

案例:文本进度条

import time
scale = 50
print("执行开始".center(scale//2,'-'))
start = time.perf_counter() #开始时间
for i in range(scale+1):
    a = '*' * i
    b = '.' * (scale - i)
    c = (i / scale) * 100
    end = time.perf_counter() - start
    print("\\r:^3.0f%[->] :.2fs".format(c,a,b,end),end='')
    time.sleep(0.1)
print("\\n"+"执行结束".center(scale//2,'-'))

二、程序的控制

1、程序的分支结构

if 条件:
	语句块1
else:
	语句块2
紧凑形式:表示式1 if 条件 else 表达式2  #不能进行赋值操作
"对" if x==0 else "错"
if 条件1:		#多分支结构
	语句块1
elif 条件2:
	语句快2
else:
	语句块3

​ x and y #两个条件x和y的逻辑与

​ x or y #两个条件x和y的逻辑或

​ not x #条件x的逻辑非

2、程序的异常处理

异常处理的基本使用

try:
	语句块1
except 异常类型:#标准类型后,只会相应这个异常
	语句块2

异常处理的高级使用

try :
	语句块1
except 异常类型:	#发生对应的异常后,执行语句块2
	语句块2
else :		#在不发生异常时执行语句块3
	语句块3
finally :	#不管发不发生异常,最后都会执行语句块4
	语句块4

3、循环结构

for 循环变量 in 遍历结构:  #遍历循环
	语句块

​ range(n)函数:产生由0到n-1的数字序列

​ range(m,n,k) :m为起始位置,n为终止位置(不包含n),k为步长

while 条件:	#无穷循环
	语句块

break continue 循环控制保留字,退出当前循环层次

循环else的高级用法:与break有关,若break生效,则不允许else语句,否则在程序结束运行else语句

for i in range(5):
	if	i == 1 :
		break
	print(i)
else:
	print('是否退出')

4、random库的使用

​ random库是使用随机数的python标准库

​ 使用方法:import random

4.1、基本随机数函数

​ seed(a=None) #初始化给定的随机数种子,默认为当前系统时间。才方便程序复现

random.seed(10)		#产生种子10对应的序列

​ random() #生成[0.0 , 1.0)之间的随机小数

4.2、扩展随机数函数

​ randint(a,b) #生成一个[a,b]之间的整数

random.randint(10,100)		# 64

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

random.randrange(10,100,80)		# 80

​ getrandbits(k) #生成一个k比特长的随机整数

​ uniform(a,b) #生成一个[a,b]之间的随机小数

​ choice(seq) #从序列中随机选取一个元素,并返回

​ shuffle(seq) #将序列seq种元素随机打乱

三、函数和代码复用

1、函数

1.1、函数的参数传递

​ 函数可以有参数,也可以没有参数,但必须保留括号

	def 函数名():
		函数体
		return 返回值  	#可以省略

​ 函数定义时,可以设置默认参数,为可选参数

def 函数名(非可选参数,可选参数):
	函数体
	return 返回值
def fun(n,m=1):		#m默认值为1,为可选参数
	return n+m
a = fun(10)		#不设置可选参数传递
b = fun(10,5)	#设置可选参数
c = fun(m=5,n=10)	#名称传递,默认为位置传递

​ 函数定义时可以设置可变参数传递,即不确定参数的总数量

def 函数名(参数,*a):
	函数体
	return 返回值
def fun(n,*a):
	for i in a:
		n += i
	return n
a = fun(10,3)		#最少一个参数
b = fun(10,3,4,5,6)		#传递多个参数

1.2、全局变量和局部变量

​ 基本数据类型,无论是否重名,局部变量与全局变量不同

​ 可以通过global保留字在函数内部声明全局变量

​ 在函数外定义的组合数据类型,在函数内不需要声明,就为全局变量

​ 在函数内创建的组合数据类型,就是局部变量

1.3、lambda函数

​ lambda函数返回函数名作为结果

​ lambda函数是一种匿名函数,即没有名字的函数

函数名 = lambda 参数 : 表达式
f = lambda x,y = x + y
print(f(10,5))

​ lambda函数主要用作一些特定函数或方法的参数

​ lambda函数有一些固定使用方式,建议逐步掌握

2、代码复用和函数递归

​ 递归类似数学归纳法,数学思维在编程中的体现

​ 递归本身是一个函数,需要调用本身。

def fun(n):		#求解n!,采用递归
	return 1 if n == 1 else n*fun(n-1)
print(fun(5))

​ 递归只用考虑:出口,以及n与n-1之间的关系

#汉诺塔实践
steps = 0
def hanoi(src, des, mid, n):
    global steps
    if n == 1:
        steps += 1
        print("[STEP:>4] ->".format(steps, src, des))
    else:
        hanoi(src,mid,des,n-1)
        steps += 1
        print("[STEP:>4] ->".format(steps, src, des))
        hanoi(mid,des,src,n-1)

N = eval(input())
hanoi("A", "C", "B", N)

3、PyInstaller库的使用

​ 将.py源代码转换为无需源代码的可执行文件

​ 安装下载(cmd命令行):pip instal pyinstaller

​ 使用方式:进入当前文件 cd /d 路径

​ cmd命令行:pyinstaller -F 文件名.py

​ -h 查看帮助 --clean 清理打包过程中的临时文件

​ -D,–onedir 默认值,生成dist文件夹

​ -F,–onefile 在dist文件夹中只生成独立的打包文件

​ -i<图标文件名.ico> 指定打包程序使用的图标(icon)文件

四、组合数据类型

1、集合类型

​ 集合是多个元素的无序组合,集合中每个元素唯一,不存在相同元素,集合之间是无序的

​ 集合用大括号表示,元素间用逗号分隔

​ 建立集合类型用或set(),建立空集合类型,必须使用set()

六大操作符描述
S | T返回一个新集合,包括在集合S和T中的所有元素
S - T返回一个新集合,包括在集合S但不在T中的元素
S & T返回一个新集合,包括同时在集合S和T中的元素
S ^ T返回一个新集合,包括集合S和T中的非相同元素
S <= T 或 S < T返回True/False,判断S和T的子集关系
S >= T 或 S > T返回True/False,判断S和T的包含关系
集合操作函数或方法描述
S.add(x)如果x不在集合S中,将x增加到S
S.discard(x)移除S中元素x,如果x不在集合S中,不报错
S.remove(x)移除S中元素x,如果x不在集合S中,产生KeyError异常
S.clear()移除S中所有元素
S.pop()随机返回S的一个元素,更新S,若S为空产生KeyError异常
S.copy()返回集合S的一个副本
set(x)将其他类型变量x转变为集合类型

2、序列类型

​ 序列是具有先后关系的一组元素

​ 序列是一维元素向量,元素类型可以不同

​ 序列索引包括从0开始的正向顺序,以及从-1开始的逆向顺序

map()函数:是python内置函数,会根据提供的函数对指定的序列做映射。

map(function,iterable,...)

​ 第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。

2.1、列表

​ 列表是一种序列类型,创建后可以随意被修改,使用方括号[]或list()创建,元素间用逗号,分隔

​ 列表中各元素类型可以不同,无长度限制

列表方法描述
ls.append()将一个对象附加到列表末尾
ls.clear()清空列表内容
ls.copy()复制列表,并返回一个副本
ls.count(x)计算列表中指定元素x的个数
ls.extend(lst)将列表lst扩展到列表ls之后
ls.index(x)在列表中查找元素x第一次出现的索引,如果没有引发ValueError错误
ls.insert(2,x)将元素插入到列表ls下标为2的位置
ls.pop()从列表删除一个元素,并返回
ls.remove(x)删除第一个为x的元素,不返回,如没有,引发ValueError异常

​ ls.reverse() 反转列表

​ ls.sort() 列表就地排序

​ sorted()函数:返回一个排序列表,不修改原列表

高级排序sort()

​ key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。此处一般与lambda函数结合使用

​ reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。

​ sort()接受两个可选参数:key和reverse

2.2、元组

​ 元组是一种序列类型,一旦创建就不能被修改

​ 使用小括号()或tuple()创建,元素间用逗号,分隔

​ 元组继承了序列类型的全部通用操作,元组因为创建后不能修改,因此没有特殊操作

3、字典

字典是键值对的集合,键值对之间无序,采用大括号和dict()创建,键值对用冒号:表示

函数或方法描述
d.keys()返回字典d中所有的键信息
d.values()返回字典中所有的值信息
d.items()返回字典中所有的键值对信息
d.get(k,)键k存在,则返回相应值,不在则返回值
d.pop(k,)键k存在,则取出相应值,不在则返回值
d.popitem()随机从字典d中取出一个键值对,返回一个元组形式
d.clear()删除所有的键值对

4、jieba库的使用

​ jieba是优秀的中文分词第三方库

​ 安装jieba库:cmd命令行:pip install jieba

jieba分词的三种模式:

精确模式:把文本精确的切分开,不存在冗余单词

全模式:把文本中所有可能的词语都扫描出来,有冗余

搜索引擎模式:在精确模式基础上,对长词再次切分

函数描述
jieba.lcut(s)精确模式,返回一个列表的分词结果
jieba.lcut(s,cut_all = True)全模式,返回一个列表类型的分词结果,存在冗余
jieba.lcut_for_search(s)搜索引擎模式,返回一个列表类型的分词结果,存在冗余
jieba.add_word(w)向分词词典增加新词w
jieba.lcut("中国是一个伟大的国家")	#精确模式
#  ['中国', '是', '一个', '伟大', '的', '国家']

jieba.lcut("中国是一个伟大的国家",cut_all = True)		#全模式
#  ['中国', '国是', '一个', '伟大', '的', '国家']

jieba.lcut_for_search("中华人民共和国是伟大的")	#搜索引擎模式
#	['中华', '华人', '人民', '共和', '共和国', '中华人民共和国', '是', '伟大', '的']

jieba.add_word('蟒蛇语言')

五、文件操作和数据格式化

1、文件的使用

​ 文件是数据的抽象和集合

​ 文件是存储在辅助存储器上的辅助序列,是数据存储的一种形式,文件展现形态:文本文件和二进制文件

文本文件:由单一特定编码组成的文件,如UTF-8编码

二进制文件:直接由比特0和1组成,没有统一字符编码

文件的打开模式描述
‘r’只读模式,默认值,如果文件不存在,返回FileNotFoundError
‘w’覆盖写模式,文件不存在则创建,存在则完全覆盖
‘x’创建写模式,文件不存在则创建,存在则返回FileExistsError
‘a’追加写模式,文件不存在则创建,存在则在文件最后追加内容
‘b’二进制文件模式
‘t’文本文件模式,默认值
‘+’与r/w/x/a一同使用,在原功能基础上增加同时读写功能

1.1、文件内容的读取

操作方法描述
f.read(size=-1)读入全部内容,如果给出参数,读入前size长度
f.readline(size=-1)读入一行内容,如果给出参数,读入该行前size长度
f.readlines(hint =-1)读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行

1.2、文件内容的写入

操作方法描述
f.write(s)向文件写入一个字符串或字节流
f.writelines(lines)将一个元素全为字符串的列表写入文件
f.seek(offset)改变当前文件操作指针的位置,offset含义如下:0-文件开头;1-当前位置;2-文件结尾

2、数据的格式化和处理

2.1、一维数据

​ 由对等关系的有序或无序数据构成,采用线性方式组织,对应列表、数组和集合等概念

​ 有序使用列表,无序使用集合

​ 文件读到集合:split()

​ 集合写入文件:.join(s)

2.2、二维数据

​ 由多个一维数据构成,是一维数据的组合形式,表格是典型的二维数据

​ 二维列表表达二维数据: [ [], [] ]

​ 两层for循环遍历每个元素

CSV数据存储格式:国际通用的一二维数据存储格式,一般.csv扩展名

​ 每行一个一维数据,采用逗号,分隔,无空行。存储一般按行存储

3、wordcloud库的使用

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

​ 词云以词语为基本单位,更加直观和艺术的展示文本

​ 安装:cmd命令行:pip install wordcloud

​ wordcloud库把词云当作一个WordCloud对象

​ wordcloud.WorCloud()代表一个文本对应的词云,可以根据文本中词语出现的频率等参数绘制词云,绘制词云的形状、尺寸和颜色都可以设定

​ w = wordcloud.WorCloud() 生成一个词云对象

方法描述
w.generate(txt)向WordCloud对象w中加载文本txt
w.to_file(filename)将词云输出为图像文件,.png或.jpg格式

常规使用方法:

1、配置对象参数 w = wordcloud.WorCloud(<参数>)

2、加载词云文本 w.generate(“Python and WordCloud”)

3、输出词云文本 w.to_file(filename.png)

参数描述
width指定词云对象生成图片的宽度,默认400像素
height指定词云对象生成图片的高度,默认200像素
min_font_size指定词云中字体的最小字号,默认4号
max_font_size指定词云中字体的最大字号,根据高度自动调节
font_step指定词云中字体字号的步进间隔,默认为1
font_path指定字体文件的路径,默认None
max_words指定词云显示的最大单词数量,默认200
stop_words指定词云的排除词列表,即不显示的单词列表
mask指定词云形状,默认为长方形,需要引用imread()函数
background_color指定词云图片的背景颜色,默认为黑色
#修改词云形状
from scipy,misc import imread
mk = imread("pic.png")
w = wordcloud.WorCloud(mask=mk) 
参数描述
width指定词云对象生成图片的宽度,默认400像素
height指定词云对象生成图片的高度,默认200像素
min_font_size指定词云中字体的最小字号,默认4号
max_font_size指定词云中字体的最大字号,根据高度自动调节
font_step指定词云中字体字号的步进间隔,默认为1
font_path指定字体文件的路径,默认None
max_words指定词云显示的最大单词数量,默认200
stop_words指定词云的排除词列表,即不显示的单词列表
mask指定词云形状,默认为长方形,需要引用imread()函数
background_color指定词云图片的背景颜色,默认为黑色
#修改词云形状
from scipy,misc import imread
mk = imread("pic.png")
w = wordcloud.WorCloud(mask=mk) 

以上是关于python学习笔记-基础版的主要内容,如果未能解决你的问题,请参考以下文章

python学习笔记-基础版

python基础学习笔记——Python基础教程(第2版 修订版)第一章

python基础学习笔记——Python基础教程(第2版 修订版)第四章(字典)

python基础学习笔记——Python基础教程(第2版 修订版)第十章(充电时刻)

python基础学习笔记——Python基础教程(第2版 修订版)第三章(字符串)

python基础学习笔记——Python基础教程(第2版 修订版)第11章(文件与素材)