一、函数:
1、评估函数eval():去掉参数最外侧引号并执行余下语句的函数
eval(<字符串或字符串变量>)
>>>eval("1")
1
>>>eval("1+2")
3
>>>eval(' "1+2" ')
'1+2'
2、输入函数input():从控制台获得用户输入的函数
使用格式:<变量>=input(<提示信息字符串>)
用户输入的信息以字符串类型保存在<变量>中
二、字符串的使用:
使用[ ]获取字符串中一个或多个字符
1、索引:返回字符串中单个字符 <字符串>[M]
例如:TempStr[-1]:获得该字符串的最后一个字符(从0开始计数,即0代表第一个字符。反过来从-1开始计数,即-1代表最后一个字符)
2、切片:返回字符串中一段字符子串 <字符串>[M:N]
例如TempStr[0:-1]:相当于取第一个字符到最后一个字符之前(不包括最后一个字符,即相当于把该字符串的最后一个字符去掉)
TempStr[ : ]:相当于截取字符串的全部字符
TempStr[ 6 : ]截取第七个字符到结尾
TempStr[ : -3]截取从头开始到倒数第三个字符之前
TempStr[ ::-1] 创造一个与原字符串顺序相反的字符串
3、更高级切片:<字符串>[M:N:K] 根据步长k对字符串切片
比如:“零一二三四五六七”[1:8:2] 结果是“一三五七”
4、字符串操作符
操作符及使用 | 描述 |
x+y | 连接两个字符串x和y |
x*n 或n*x | 复制n次字符串x |
x in s | 如果x是s的子串,返回True,否则返回False |
5、字符串处理函数
函数及使用 | 描述 |
len(x) | 返回字符串x的长度。len(“123一二三”)结果为6 |
str(x) | 任意类型x所对应的字符串形式 |
hex(x)或otc(x) | 整数x的十六进制或八进制小写形式字符串 |
chr(u) | u为Unicode编码,返回其对应的字符 |
ord(x) | x为字符,返回其对应的Unicode编码 |
6、字符串处理方法
方法及使用 | 描述 |
str.lower()或str.upper() | 返回字符串的副本,全部字符小写/大写 |
str.split(sep=None) | 返回一个列表,由str根据sep被分隔的部分组成 例如:str4 = '123423664234' print(str4.split('2')) 结果为:['1', '34', '3664', '34'] |
str.count(sub) | 返回字串sub在str中出现的次数 |
str.replace(old,new) | 返回字符串副本,所有old子串被替换为new |
str.center(width[,fillchar]) | 字符串str根据宽度width居中,fillchar可选 比如:“python”.center(20,“=”)结果为: “=======python=======” |
str.strip(chars) | 从str中去掉左侧和右侧chars中列出的字符 比如:“= python= ”.strip(“ =np”)结果为:“ytho” |
str.join(iter) | 在iter变量除最后一个元素外每个元素后增加一个str 比如“,”.iter(“12345”)结果为:“1,2,3,4,5”#主要用于字符串分隔 |
7、字符串的格式化
format()方法的格式控制
(1):引导符号的前三个格式控制
: | <填充> | <对齐> | <宽度> | 例子 |
引导符号 | 用于填充的单个字符 | <左对齐 >右对齐 ^居中对齐 | 槽设定的输出宽度 | "{0:=^20}".format("python") 结果为:'=======python=======''
|
默认情况下为以空格填充,右对齐
(2):引导符号的后三个引导控制
<,> | <.>精度 | <类型> | 例子 |
数字的 千位 分隔符 | 浮点数小数精度或 字符串最大输出长度 | 整数类型b,c,d,o,x,X 浮点数类型e,E,f,% | (1)"{0:,2f}".format(12345.6789) 结果为:'12,345.68' (2)"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425) 结果为:'110101001,Ʃ,425,651,1a9,1A9'' (3)"{0:e},(0:E),(0:f),{0:%}".format(3.14) 结果为:“3.140000e+00,3.140000E+00,3.140000,314.000000%” |
四、for循环
1、for x in ...
循环就是把每个元素代入变量x
,然后执行缩进块的语句。
例如:如果要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个range()
函数,可以生成一个整数序列,再通过list()
函数可以转换为list。比如range(5)
生成的序列是从0开始小于5的整数:
>>> list(range(5))
[0, 1, 2, 3, 4]
range(101)
就可以生成0-100的整数序列,计算如下:
sum = 0
for x in range(101):
sum = sum + x
print(sum)
2、循环的扩展
循环与else:当循环没有被break语句退出时,执行else语句块(else语句块作为“正常”完成循环的奖励,和异常中的else用法相似)。
五、标准库和第三方库
Python计算生态=标准库+第三方库。
标准库:随解释器直接安装到操作系统中的功能模块。
第三方库:需要经过安装才能使用的功能模块。
import <库名> as <库别名>
<库别名>.<函数名>(<函数参数>)
六、标准库turtle
1、turtle.setup(width,height,startx,starty);
startx(starty):表示窗体左上角距离屏幕的横向距离(纵向距离)。
setup()设置窗体大小及位置,4个参数后两个参数可选。(后两个参数没写默认窗体显示在屏幕正中间)setup()函数不是必须得使用的。
2、画笔控制函数-----画笔设置后一直有效,直至下次重新设置
turtle.penup() 别名 turtle.pu()
抬起画笔,海龟在飞行(意思是说海龟的飞行路径不会显示在画布上)
turtlr.pendown() 别名 turtle.pd()
落下画笔,海龟在爬行(意思是说海龟的飞行路径会显示在画布上)
turtle.pensize(width) 别名 turtle.width(width)
设置画笔宽度
3、运动控制函数-----控制海龟行进:走直线&走曲线
(1)走直线:turtle.forward(d) 别名 turtle.fd(d)
向前行进,海龟走直线(d:行进距离,可以为负数,负数即倒着走)
(2)走曲线:turtle.circle(r,extend=None)
根据半径r绘制extend角度的弧形,r:默认圆心在海龟左侧r距离的位置。extend:绘制角度,默认是360度整圆
4、方向控制函数
(1)绝对角度:turtle.setheading(angle) 别名 turtle.seth(angle)
改变行进方向,海龟走角度。angle:旋转的角度
(2)海龟角度:
turtle.left(angle) : 海龟向左转
turtle.right(angle) : 海龟向右转
-angle:旋转的角度
七、基本数据类型
1、整数类型(没有取值范围限制)
(1)十进制:10,66
(2)二进制:以0b或0B开头:0b010,-0B101
(3)八进制:以0o或0O开头:0o123,0O246
(4)十六进制:以0x或0X开头:0x9a,0X89
2、pow(x,y)函数:计算x的y次幂,想算多大就算多大
3、浮点数类型
(1)带有小数点及小数的数字
(2)浮点数取值范围和小数精度都存在限制,但常规计算可忽略
(3)取值范围数量级约-10的308次方至10的308次方,精度数量级10的-16次方
(4)浮点数间运算存在不确定尾数,不是bug。比如0.1+0.2=0.30000000004
4、round(x,d)函数:对x四舍五入,d是小数截取位数 。(可用于浮点数间运算及比较)
5、科学计数法表示
使用字母e或E作为幂的符号,以10为基数,格式如下:
<a>e<b> 表示a乘以10的b次方
例如:4.3e-3值为:0.0043 9.6E5值为:960000.0
6、操作符
x**y:x的y次幂
x/y:x与y之商:10/3=3.33333
x//y:整数除:10//3=3
7、类型间可进行混合运算,生成结果为“最宽”结果。
三种类型宽度比较:整数<浮点数<复数
八、标准库Random
1、基本随机数函数
函数 | 描述 |
seed(a=None) | 初始化给定的随机数种子,默认为当前的系统时间 |
random() | 生成一个[0.0,1.0)之间的随机小数 |
2、扩展随机数函数
函数 | 描述 |
randint(a,b) | 生成一个[a,b]之间的整数 |
randrange(m,n[,k]) | 生成一个[m,n)之间以k为步长的随机整数 |
getrandbits(k) | 生成一个k比特长的随机整数 |
uniform(a,b) | 生成一个[a,b]之间的随机小数(生成的小数保留小数点后16位) |
choice(seq) | 从序列seq中随机选择一个元素 例如:random.choice([1,2,3,4,5,6,7,8]);结果为8 |
shuffle(seq) | 将序列seq中元素随机排列,返回打乱后的序列 s=[1,2,3,4,5,6,7,8];random.shuffle(s);print(s) (代码放在同一行要以分号分开) 结果为:[3,5,8,9,6,1,2,7,4] |
九、函数
1、在局部变量里面使用全局变量:
在函数中使用global保留字声明此处s是全局变量s 。
2、局部变量为组合数据类型且未创建,等同于全局变量。
3、lambda函数
lambda函数是一种匿名函数,即没有名字的函数,返回函数名作为结果。
lambda函数用于定义简单的、能够在一行内表示的函数。
格式:<函数名>=lambda <参数>:<表达式>
4、函数的参数传递
(1)可选参数:函数定义时可以为某些参数指定默认值,构成可选参数。(可选参数一定要放在非可选参数后面)
(2)可变参数:函数定义时可以设计可变数量参数,即不确定参数总数量。用*加个字符表示不确定参数
格式: def<函数名>(<参数>,*b):
<函数体>
return <返回值>
(3)函数调用时,参数可以按照位置或者名称方式传递。
注意:谨慎使用lamdba函数。lamdba函数主要用作一些特定函数或方法的参数。
5、函数的返回值
(1)函数可以返回0个或多个结果。
(2)return保留字用来传递返回值。
(3)函数可以有返回值也可以没有,可以有return也可以没有。
(4)return可以传递0个返回值,也可以传递任意多个返回值。
十、标准库Time
函数 | 描述 |
time() | 获取当前时间擢,即计算机内部时间值,浮点数 |
ctime() | 获取当前时间并以易读方式表示,返回字符串 例如:time.ctime() 结果为:‘Fri Jan 26 12:11:16 2018’ |
gmtime() | 获取当前时间,表示为计算机可处理的时间格式 time.gmtime() 结果为:time.struct_time(tm_year=2019, tm_mon=7, tm_mday=29, tm_hour=15, tm_min=28, tm_sec=48, tm_wday=0, tm_yday=210, tm_isdst=0) |
(2)时间格式化
函数 | 描述 |
strftime(tpl,ts) | tpl是格式化模板字符串,用来定义输出效果。ts是计算机内部时间类型变量。 t=time.gmtime() time.strftime(“%Y-%m-%d %H:%M:%S”,t) 结果为:‘2019-07-26 23:34:24’ |
strptime(str,tpl) | str是字符串形式的时间值 tpl是格式化模板字符串,用来定义输入效果 例如:timestr=‘2019-07-29 23-46-24’ time.strptime(timestr,“%Y-%m-%d %H:%M:%S”) 结果为:time.struct_time(tm_year=2019, tm_mon=7, tm_mday=29, tm_hour=15, tm_min=28, tm_sec=48, tm_wday=0, tm_yday=210, tm_isdst=0) |
(3)格式化字符串的标志
格式化字符串 | 日期/时间说明 | 值范围和实例 |
%Y | 年份 | 0000~9999 |
%m | 月份 | 01~12 |
%B | 月份名称 | Jaunary~December |
%b | 月份名称缩写 | Jan~Dec |
%d | 日期 | 01~31 |
%A | 星期 | Monday~Sunday |
%a | 星期缩写 | Mon~Sun |
%H | 小时(24h制) | 00~23 |
%I | 小时(12h制) | 01~12 |
%p | 上/下午 | AM,PM |
%M | 分钟 | 00~59 |
%S | 秒 | 00~59 |
十一、第三方库PyInstaller
1、概括:
将.py源代码转换成无需源代码的可执行文件
2、安装第三方库需要使用pip工具
通过在cmd命令行输入pip install pyinstaller
3、常用参数
参数 | 描述 |
-h | 查看帮助 |
--clean | 清理打包过程中的临时文件 |
-D,--onedir | 默认值,生成dist文件夹 |
-F,--onefile | 在dist文件夹中生成独立的打包文件 |
-i <图标文件名。ico> | 指定打包程序使用的图标(icon)文件 |
十二、第三方库jieba库
(1)通过在(cmd命令行)输入:pip install jieba
(2)jieba是优秀的中文分词第三方库。(中文文本需要通过分词获得单个的词语)
(3)jieba分词的三种模式:
精确模式:把文本精确的切分开,不存在冗余
全模式:把文本中所有可能的词语都描述出来,有冗余
搜索引擎模式:在精确模式基础上,对长词再次切分
函数 | 描述 |
jieba.lcut(s) | 精确模式,返回一个列表类型的分词结果 jieba.lcut(“中国是一个伟大的国家”) [‘中国’,‘是’,‘一个’,‘伟大’,‘的’,‘国家’] |
jieba.lcut(s,cut_all=True) | 全模式,返回一个列表类型的分词结果,存在冗余 jieba.lcut(“中国是一个伟大的国家”,cut_all=True) [‘中国’,‘国是’,‘一个’,‘伟大’,‘的’,‘国家’] |
jieba.lcut_for_search(s) | 搜索引擎模式,返回一个列表类型的分词结果,存在冗余 jieba.lcut_for_search(“中华人民共和国是伟大的”) [‘中华’,‘华人’,‘人民’,‘共和’,‘共和国’,‘中华人民共和国’,‘是’,‘伟大’,‘的’] |
jieba.add_word(w) | 向分词词典增加新词w jieba.add_work(“蟒蛇语言”) |
十三、组合类型
1、集合
(1)集合类型的定义:集合是多个元素的无序集合。(并且每个元素是唯一的,即不重复的)
(2)集合用大括号{}表示,元素间用逗号分隔
(3)建立集合类型用{}或set()
(4)建立空集合类型,必须使用set()(因为空大括号代表的是生成空字典类型的)
例如:>>>A={“python”,123,(“python”,123)}
结果为:{123,‘python’,(‘python’,123)}
>>>B=set(“pypy123”)
结果为:{‘1’,‘p’,‘2’,‘3’,‘y’}
2、集合操作符
操作符及应用 | 描述 |
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的包含关系 |
3、集合处理方法
操作函数或方法 | 描述 |
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为空产生KeyError异常 |
S.copy() | 返回集合的一个副本 |
len(S) | 返回集合S的元素个数 |
x in S | 判断S中元素x,x在集合S中,返回True,否则返回False |
x not in S | 判断S中元素x,x不在集合S中,返回True,否则返回False |
set(X) | 将其他类型变量x转变为集合类型 |
4、应用场景
关系比较和数据去重(最重要)
5、序列类型定义
(1)序列具有先后关系的一组元素
(2)序列是一维元素向量,元素类型可以不同
(3)元素间由序号引导,通过下标访问序列的特定元素
(4)序列是一个基类类型,包括字符串类型、元组类型、列表类型
6、序列类型通用操作符
操作符及应用 | 描述 |
x in s | 如果x是序列s的元素,返回True,否则返回False |
x not in s | 如果x是序列s的元素,返回Fasle,否则返回True |
s + t | 连接两个序列 |
s*n 或 n*s | 将序列s复制n次 |
s[i] | 索引,返回s中的第i个元素,i是序列的序号 |
s[i:j]或s[i:j:k] | 切片,返回序列s中第i到j以k为步长的元素子序列 |
7、序列通用函数和方法
函数和方法 | 描述 |
s.index(x)或s.index(x,i,j) | 返回序列s从i开始到j位置中第一次出现元素x的位置 |
s.count(x) | 返回序列s中出现x的总次数 |
8、元组类型定义(可用于数据保护)
(1)元组是序列类型的一种扩展,继承了序列类型的全部通用操作。
(2)元组是一种序列类型,一旦创建就不能修改。
(3)使用小括号()或tuple()创建,元素间用逗号,分隔。
(4)可以使用或不使用小括号 。
creature="Cat","Dog","Tiger","Human"
color=(0x01001,"blue",creature)
color[-1][2] //结果为‘Tiger’,因为第一个索引到creature,又因为creature也是元组类型,所以接着索引creature的第二个元素
9、列表类型定义
(1)列表是序列类型的一种扩展,创建后可以随意被修改
(2)使用方括号[]或list()创建(就是真正创建列表,如果通过赋值的话,只是值传递,即名字不同,但是指的是用一个列表),元素间用逗号,分隔。
(3)列表中各元素可以不同,无长度限制。
10、列表类型操作函数和方法
函数或方法 | 描述 |
ls[ i ]=x | 替换列表ls第i个元素为x |
ls[i:j:k]=it | 用列表it替换ls切片后所对应元素子列表 |
del ls[i] | 删除列表ls中第i个元素 |
del ls[i:j:k] | 删除列表ls中第i到第j以k为步长的元素 |
ls+=lt | 更新列表ls,将it元素增加到列表ls中 |
ls*=n | 更新列表ls,将元素重复n次 |
ls.append() | 在列表ls最后增加一个元素x |
ls.clear() | 删除列表ls中所有元素 |
ls.copy() | 生成一个新列表,赋值ls中所有元素 |
ls.insert(i,x) | 在列表ls的第i位置增加元素x |
ls.pop(i) | 在列表ls中第i位置元素取出并删除该元素 |
ls.remove(x) | 将列表ls中出现的第一个元素x删除 |
ls.reverse() | 将列表ls中的元素反转 |
11、字典类型定义(表达键值对数据,进而操作它们,如统计数据出现的次数)
(1)字典是键值对的集合,键值对之间无序
(2)采用大括号{}和dict()创建,键值对用冒号表示。
(3)d[key]方式既可以索引,也可以赋值。
例如:<字典变量>={<键1>:<值1>,<键2>:<值2>}
<值>=<字典变量>[<键>] <字典变量>[<键>]=<值>
函数或方法 | 描述 |
del d[k] | 删除字典d中键k对应的数据值 |
k in d | 判断键k是否在字典d中,如果在返回True,否则False |
d.keys() | 返回字典d中所有的键信息 |
d.values() | 返回字典d中所有的值信息 |
d.items() | 返回字典d中所有的键值对信息 |
d.get(k,<default>) | 键k存在,则返回相应值,不在则返回<default>值 |
d.pop(k,<default>) | 键k存在,则取出相应值,不在则返回<defalut>值 |
d.popitem() | 随机从字典d中取出一个键值对,以元组形式返回 |
d.clear() | 删除所有的键值对 |
len(d) | 返回字典d中元素个数 |