考前再对一些简单的代码进行巩固。
祝大家都能通过,优秀优秀!!
目录
1、简单的输出
2、for循环
3、eval() 去引号
4、abs()去绝对值 divmod()除法 pow()幂 max最大值 min最小值
5、位运算 & | ^ ~ 应该是选择题
6、转义符
7、切片
8、格式化输出
9、字符串
10、for循环
11、异常处理
12、列表
13、元组(tuple)
14、字典
15、集合 set { , , }
16、文件
17、数据组织的维度
18、函数
20、random库
22、jieba 分词
23、worldcloud 词云
24、Python第三方库纵览
print('Hello world!')
for i in range(10): if i%2==0: continue print(i)
a=input("请输入你的名字:") #统一按照字符类型接受 tpye(a)可以看类型 b=eval(input("请输入你的年龄: ")) #eval去引号 print("这是一个字符串。") print(a,b) print("你是{} ,你{}了".format(a,b))
print(abs(-25)) #绝对值 print(divmod(10,3)) #除 得到元胞(3,1) x,y=divmod(10,3) #解包赋值法 元胞 print(x,y,"\n") print("pow(10,2)={}".format(pow(10,2)) ) #计算x的y次幂 print("pow(10,2,3)={}\n".format(pow(10,2,3)) ) #计算x的y次幂再取余3 print("max(1,2,3,4,6,4,8,9)={}".format(max(1,2,3,4,6,4,8,9))) print("min(1,2,3,4,6,4,8,9)={}".format(min(1,2,3,4,6,4,8,9)))
x=0b10101111 y=0b11111110 #可认为一个是操作码 print("0b10101111&0b11111110={}\n".format(bin(x&y)))#按位与,1不变,0清零 print("0b10101111|0b11111110={}\n".format(bin(x|y))) #按位或,1满1,0不变 print("~0b10101111={}\n".format(bin(~x))) #按位取反 -0b10110000 print("0b10101111^0b11111111={}\n".format(bin(x^y))) #按位或,用处不知 print("0b10101111<<2={}".format(bin(x<<2))) #左移 print(x) print("x<<2={}\n".format(x,x<<2)) #左移 左移1位,翻倍 print("0b10101111>>2={}".format(bin(x>>2))) #右移 带符号
print("123\n456") # \n 换行 print("123\t456") # \t tab 4个空格 print("123\b") # \b 退格
用[ ] 去索引,不包括第2位,
注意从第0位开始
s='计算机二级考试' print(s[0:2]) print(s[-1:2]) #无结果 print(s[-1:2:-1]) #结果为:试考级二
格式化输出最有可能是操作题,
s=eval(input("请输入一个字符串:")) print("{:->20,}".format(s))
要记清格式的位置,先填充,再左右,再宽度
常考
例如:字符类:
s='python' print("{:*<20}".format(s)) #*填充,左对齐,20字符 print("{:\^20}".format(s)) # \填充,居中,20字符 print("{:.5}".format(s)) #只保留前5个字符 结果:pytho
{ }是占位符,必须加上,否则就是普通的字符串“:.5”
主要是填充一些字符输出
数字类:
print("{:5,}".format(456789123)) #宽度5(只有小于5才有用),逗号分隔 结果:456,789,123 print("{0:b},{0:c}, {0:d}, {0:o}, {0:x}, {0:X}".format(520)) # 二进制,Unicode字符,十进制,八进制,十六进制,十六进制 #1000001000, Ȉ, 520, 1010, 208, 208 print("{0:e}, {0:E}, {0:f}, {0:%}".format(3.1415926)) #e指数形式 E指数形式 标准浮点形式 浮点数的百分比形式 #3.141593e+00, 3.141593E+00, 3.141593, 314.159260% print("{0:.2f}".format(3.1415926)) #保存两位小数 结果:3.14
单字符串操作
s='Hello World' print(str(s)) #强制类型转化为str print(len(s)) #字符串长度 print(s.count('or'),'\n') #数子字符串 print(s.lower()) #全部小写,不改s print(s.upper(),'\n') #全部大写,不改变s 只有使 s = s.upper() 才会变化 print(s.replace("He",'hh')) #he用hh代替,s不变 print(s.center(15,"*"),'\n') #字符串居中函数,fillchar参数可选 print(s.split(' ')) #返回一个列表,以sep作为分隔点,sep默认为空格 print(s.strip("H")) #从字符串str中去掉在其左侧和右侧chars中列出的字符 print(s.join("123"),'\n') #将s作为分隔符插入“123”中,一般s是','之类 print(s) #s一直没变
字符串间操作
a='python' b='520' print(a+b) #字符串连接 print(b*2) #字符串复制 print(a in b) #字符串是否存在于
尤其是split(),strip(),join() 在操作题中常用
第四章:
for 循环变量 in 组合式变量(字符串、文件、range()函数、列表、字典): (冒号别忘了)
for i in range(1,4): print(i)
1.continue语句
用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。
2.break语句
跳出最内层循环,终止该循环后,从循环后的代码继续执行。
单分支选择结构。使用语法为:
s=input('Please input number:') while 1: try: s=int(s) print(s) break except ValueError: print("a number!! ") s=input("Please input number:")
try…except…else…
该结构可以看为双分支结构,
else中的代码只有在try中代码没有引发异常的情况下执行。
try…except…finally…
该结构中,无论try代码中是否发生异常,finally语句块中的代码总会执行。
捕捉多种异常的异常处理结构
try:
<>
except <异常类型>:
<操作>
except <异常类型>:
<操作>
常见错误
- ZeroDivisionError: division by zero #除0错误
- TypeError: Can't convert 'int' object to str implicitly 程序的异常处理
- TypeError: unsupported operand type(s) for *: 'set' and 'int' 操作类型不支持
- NameError: name 'name' is not defined 变量名不存在
- FileNotFoundError: [Errno 2] No such file or directory: 'wangyan.txt' 文件不存在
- TypeError: object of type 'int' has no len() 参数类型不匹配
第五章:组合类型
- 一对[ ]内,用逗号分隔;
- 没有长度限制,元素类型可以不同,不需要预定义长度
- 元素有顺序,可以使用索引
- 线性的数据结构
- 列表是可变的
创建列表
a_list=[1,'python',[5,2,0]] #直接创建列表 print(a_list) s='python' s_list=list(s) #list()函数把 可迭代对象转化为列表 (字符串) print(s_list)
ls=['book',23,[2010,'stud1'],20] #多重列表 列表嵌套列表 print(ls[2][1][-1])
列表操作方法
s=list('woaiwangbingbing') print(s)
以下代码手动复制到IDLE Shell中运行
s.count('a') #方法都是加后面,有参数加参数,()必须有 s.index('a',0,10) #首次出现'a'元素的角标,从0到10中搜索 s.append("h") #返回值为none 说明就地修改,s已经改变 s.insert(-1,"0") #返回值为none 说明就地修改,最后也只能把最后一位往后挤,和append互补 s.extend([1,2,3]) #就地修改,相当于多次append del s[0] #删除函数 s.remove('a') #从左往右,删一个a s.pop(0) #显示s[0],并且从列表中删去它 s.reverse() #就地修改,倒序 s.clear() #清空列表 s.sort(key=None,reverse=True) #无排序,翻转 s.copy() #复制list中的所有元素
列表运算符
x=[1,2,3] print(x) #[1, 2, 3] x=x+[4] #可以直接加列表 print(x) #[1, 2, 3, 4] x+=[5] #自加也可以 print(x) #[1, 2, 3, 4, 5] x=x*2 print(x) #[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
列表相关例题
a = [[1,2,3], [4,5,6], [7,8,9]] s = 0 for c in a: #c是可迭代变量,它分别等于了[1,2,3],[4,5,6],[7,8,9] for j in range(3): #j 从0,1,2三次情况,分别拿c中元素相加 s += c[j] print(s) #所以这是一个二重遍历求和
- 所有元素放在圆括号()内;
- 只有一个元素,必须在最后增加一个逗号,否则形成数字,而不是元组
- 使用tuple创建空元组
- 支持双向索引
- 元组可以做字典的键
- 元组是不可变的
元组 创建
x=(1,2,3) print(x[-1]) try : x[1]=1 except TypeError: print('元组不能改某个值')
- dict()生成一个空字典
- 键和值通过冒号连接组成的集合
- 键值对 没有顺序且不能重复
- 元素类型可以不同
- 用花括号{ }表示
- 字典中是以键值对存储的,因此键就是值的索引
- 字典是可变的,可以存储任意类型
字典的建立
d=dict() d={'name':'jack','age':'18','gender':'man'}
字典的查找
d={'name':'jack','age':'18','gender':'man'} print(d['name']) 直接查找键,用[ ] try: d['123'] except KeyError: print("无该键值对") print(d.keys()) #返回键,列表形式 print(d.values()) #返回值 print(d.items()) #返回键值,原胞形式 print(d.get('key','default')) #查 key,若无返回defaul的值,注意,得加引号
字典的删除
d={'name':'jack','age':'18','gender':'man'} print(d.clear()) #清空字典 print(d.popitem()) #随机取一个键值对(元胞形式),然后删除 print(d.pop(key,default)) #键存在则返回相应值,同时删除键值对,否则返回默认值default
- 集合中的元素不可重复
- 类型只能是不可变类型
- 集合元素没有顺序,不能比较,不能排序
- 花括号{}表示,没有索引和位置的概念
- 可使用set()创建
集合的建立
s={101,'python',23.2} s=set() s=set((1,2,5,4,2,1,4,3)) #无顺序
集合的操作
s={1,2,3,4,5} t={3,4,5,6,7} print(s-t) #只减有的 {1, 2} print(s&t) #交 {3, 4, 5} print(s^t) #各自特殊的 {1, 2, 6, 7} print(s|t) #并 {1, 2, 3, 4, 5, 6, 7}
以下代码手动复制到IDLE Shell中运行
s.add(x) #加上元素x s.remove(x) #删去x, 若无,KeyError异常 s.clear() #删除所有 返回None,就地改变 s.update( ) #加新元素 返回None,就地改变 s.pop() #随机删并返回集合一个元素 x in s #x在s集合中嘛,判断语句 x not in s s.discard(x) #特定删除x
第六章:文件
文件的类型:文本文件,二进制文件
文件打开方式:
打开模式 | 含义 |
‘r’ | 只读模式,若文件不存在,返回异常FileNotFoundError |
'w' | 覆盖写模式,文件不存在则创建,存在则覆盖 |
'x' | 创建写模式,文件不存在则创建,存在则返回异常FileExistsError |
'a' | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
'b' | 二进制文件模式 |
't' | 文本文件模式 |
'+' | 与r/w/x/a一同使用,在原功能基础上增加同时读写功能 |
文件的操作
f=open('chapter6.txt','r') #打开文件 ,注意,必须有才能打开 txt = f.read() #读 txt_l = f.readline() #读一行 txt_ls = f.readlines() #读入所有行,以每行为元素形成一个列表 f.close() f=open('chapter6.txt','w') #打开文件 ,注意,必须有才能打开 f.write(txt) #写 f.writelines(txt_ls) #按列表写入 f.close()
csv数据格式
''' 一维数据:一维数据由对等关系的有序或无序数据构成,
采用线性方式组织,对应于数学中数组的概念。 '''
'''
一维数据的存储:采用空格、逗号、换行符或其他符号分隔数据,
其中以逗号分隔的存储格式叫作CSV格式。'''
ls=['天安门','故宫','九华山','黄山'] fo=open('visity.csv','w') fo.write(','.join(ls)) fo.close() fi=open('visity.csv','r') ls2=fi.read().strip('\n').split(',') #strip 去掉两边的'\n',split 以','为间隔,形成列表 print(ls2) fi.close()
二维
ls=[['景区','票价'],['天安门','15'],['故宫','120'],['九华山','160']] fo=open('ticket.csv','w') for row in ls : fo.write(','.join(row)+'\n') fo.close() fi = open('ticket.csv','r') ls2=[] for line in fi: ls2.append(line.strip('\n').split(',')) fi.close() print(ls2)
#高维数据
'''
高维数据由键值对类型的数据构成,采用对象方式组织,可以多层嵌套。
高维数据衍生出HTML、XML、JSON等具体数据组织的语法结构。
'''
第七章:函数
#1 函数的定义
def interchange(a,b): print(b,a) interchange(1,3)
#2带默认值的函数
- 使用形参名称时,传参顺序可任意调整。
- 位置参数必须在关键字参数之前传入。
- 任何一个默认值参数右边都不能再出现位置参数。
- 多次调用函数且不为默认值参数传参,默认值参数只在定义时进行一次解释和初始化。
def data(name,age=18): #默认值只能在最右边 print(name+str(age)+'岁') data('张三',126) data('李四',26)
#3关键字传参
def data(name,age=18): #默认值只能在最右边 print(name+str(age)+'岁') data(age=180,name='张三') #关键字参数传递,传参顺序可任意调整
#4可变长度参数*
*param和**param
def demo(*p): #指针的感觉 print(p) demo(1,2,'t') #结果:(1, 2, 't') def demo1(**p): #反映映射关系 print(p) demo1(a=1,b=2,c=3) #结果:{'a': 1, 'b': 2, 'c': 3}
#5 传递参数时的序列解包*
def demo(a,b,c): print(a*b*c) lis = [2,3,4] demo(*lis) #解包赋值 #demo([2,3,4]) #这样不行,因为不解包它其实就是一个参数 tup = (3,4,5) demo(*tup) #元组也可以解包 dic={1:'a',2:'b',3:'c'} demo(*dic) #对字典的键进行解包 def demo(a,b,c): print(a+b+c) demo(*dic.values()) #对字典的值进行解包 set = {4,5,6} demo(*set) #对集合进行解包
#6 字典的**解包,转为关键字传参
p={'a':1,'b':2,'c':3} def f(a,b,c): #字典中所有键必须是函数的形参名称,或者与两个*可变长度参数相对应。 print(a,b,c) f(**p) #结果:1 2 3 ''' #相当于传的是a=1,b=2,c=3 有点像关键字赋值 ''' def f(**p): for i in p.items(): print(i) p={'x':1,'y':2,'z':3} f(**p) #结果:('x', 1) # ('y', 2) # ('z', 3)
- 多个位置可变参数在形参前使用一个星号*;
- 多个关键字可变参数在形参前使用两个星号**;
- 位置可变参数和关键字参数可以收集若干个实参,多个位置可变参数收集形成一个tuple,多个关键字可变参数收集形成一个dict;
- 混合使用参数时,可变长度参数要放到参数列表的最后,普通参数需要放到参数列表前面,位置可变参数需要在关键字可变参数之前。
#7 函数中的形参和外面的实参没关系
def func(a,b): c=a**2+b b=a return c a=10 b=100 c=func(a,b)+a print('a=',a) #a= 10 print('b=',b) #b没有因为函数中的赋值而改变 #b= 100 print('c=',c) #c= 210
#8 函数返回值
- return语句用来结束函数并将程序返回到函数被调用的位置继续执行;
- return语句可以出现在函数中的任何部分;
- 可以同时返回0个或多个函数运算的结果给函数被调用处的变量;
- 当return返回多个值时,返回的值形成元组数据类型。
def cal(x,y): return x+y,x*y print( cal(4,6) ) #return返回多个值时,以元胞形式,很明显,无法更改,合理 (10, 24) a,b = cal(4,6) print(a,b) 10 24
#9 函数的作用域
局部变量:
- 命名规则与标识符一样
- 在函数内部定义,仅在函数内部有效,当函数退出时销毁
全局变量:
- 命名规则与标识符一样
- 全局变量在函数内部使用时,需要用global关键字声明,与外部变量全局变量同名
- 在函数之外定义的变量,在程序执行全过程有效
def demo(): global x #使用外部定义的变量 x = 3 y = 4 print(x,y) #x=6 #外部不定义,就是内部去定义 demo() # print(y) #函数内普通定义的函数,在外面不能使用,报错
x=3 def demo(): print(x)#异常,函数内没有使用global时,不能对其操作 x=x+1 # print(x) demo()
#局部变量与全局变量同名时,该局部变量会在自己的作用域内暂时隐藏同名的全局变量。
x=3 def demo(): x=6 print(x) demo() #输出局部变量6,而不是全局变量3
#12 lambda 函数
匿名函数适合处理临时需要一个类似于函数的功能但又不想定义函数的场合,
可以省去函数的定义过程和考虑函数的命名,让代码更加简洁,可读性更好。
myMax = lambda x,y : x if x>y else y #求较大值的匿名函数 print(myMax(1,2))
第九章:Python标准库
19、turtle库
导入turtle库
from turtle import * 全部导入,不用加点了 setup( ) 直接打开
#画笔
setup( ) 直接打开 fd(100) 向前走100,(缩写) backward(200) 后退 seth(180 ) 转角度 缩写 ,绝对角度setheading circle(100) 画圆,逆时针 circle(100,90) 90弧度 undo( ) 撤销 right( ) 前进右,逆时针转方向 left( ) 前进左,顺时针转方向 goto( ) 移动到绝对坐标,会留下移动轨迹 speed( 1) 设置画笔速度,1-10,大于10,瞬间完成 dot(r,color ) 绘制圆,以画笔为圆心 home( ) 画笔到原点,方向朝东
#画笔状态函数
直接fd(10) 就不用setup( ) 打开了 penup( )拿起画笔,笔可以移动,但没有笔迹 pendown( ) 放下画笔 pensize( ) 画笔粗细 pencolor( ) 画笔颜色 dot( ) 点个点 color( )画笔颜色,填充颜色 clear( ) 清空 begin_fill( ) 填充前 end_fill( ) 填充后 filling( ) 在begin_fill后就是Ture,end_fill前 reset( )清空,重置属性 write(' 字符串',font=('arial',20,'normal') bgcolor( ) 画布背景色 hideturtle( ) 隐藏画笔形状 showturtle( ) 显示形状 isvisible( ) 是否可见
例子:
梅森旋转算法,不是真正意义的随机数,算法算出来的
seed( ) 初始化随机数种子,默认为当前系统时间,不用必须设置 它是一个种子,可以生成一堆随机数,顺序相同 random( ) 生成[0.0 , 1.0) 之间的随机小数 randint( a,b) 生成[a, b]之间的整数,左右都闭区间 getrandbitts(k )生成内存k以内的随机整数 0b111 内存3内 7最大 randrange(a,b[,c])生成[a,b) 步长c的随机整数 uniform(a, b )生成[a,b]之间的随机小数 choice( s) 从序列中随机返回一个元素 shuffle(s) 将序列打乱返回 sample( p,k) 从p类型中随机选取k个元素,以列表返回
choice( ls) randint(a,b)用的多
例题:#猜数小游戏
from random import* seed(0) x = randint(0,100) while 1: try: s=eval(input('enter a number:')) if s==x: print('bingo!') break elif s>x: print("大了") else: print('小了') except: print('************')
21、time
时间处理、时间格式化、计时
from time import * time( ) 返回时间戳,浮点数,单位秒,从起点到现在的经过的秒数 localtime(时间戳 )返回时间,结构体形式,默认当前时间 asctime(localtime()) 标准化输出时间结构体 ctime(时间戳 )返回标准化的时间,字符串,默认当前时间 gmtime( ) 几乎和localtime一样 mktime(gmtime()) 返回秒数 time( ) mktime(gmtime( )) 返回时间戳 process_time( ) cpu运行时间,y-x 可算程序运行时间 sleep(3) cpu睡眠,不计入时间 time( ) 相减可以算上sleep()的时间 perf_counter( )可以进行程序计时
#时间的格式化输出:
strftime('%a %b %d %H %:M :%S %Y',gmtime()) 需要时间结构体
Y-year年份,
m-month月( 01-12),B-月(January) , b-月缩写
d-day日期(01-31)
A-星期,a-星期缩写
H-hour 小时(24),I - 小时(12)
M-分钟(00-59)
S-秒(00-59)
p-上下午(AM,PM)
其实就是占位符,格式化输出
strptime(x) 退回去,找时间戳
第十章:第三方库
import jieba jieba.lcut('字符串') jieba.lcut('字符串',cut_all=True) jieba.lcut_fot_search("字符串") jieba.add_word("词包") 加入词包
from worldcloud import WorldCloud txt="文本" words = jieba.lcut(txt) #对txt字符串进行jieba分词 worldcloud = WorldCloud(font_path= '字体的路径', width = ,height='',mask= '词云形状' font_step= 字号步进间隔 max_font_size= 最大的字体字号 max_words = 最大次数,默认200 stopwords = 被排排除列表 background_color = 图片背景颜色_) #美化工作 worldcloud.generate(text) worldcloud.to_file(filename) #保存为哪个文件
请自动忽略中文,中文只是帮助记忆
1、网络爬虫
import requests
requests.get()
2、数据分析
numpy number 数字(ndim维度、shape数组形状、size元素个数、itemsize内存大小)
scipy
pandas
redis-py 数据存储
PyMongo 数据储存 Monte山能存储
seaborn 海生数据
3、文本处理方向
pdfminer pdf文本
openpyx1
beautifulsoup4 美化文本,解析和处理HTML和XML
SnowNLP 自然语言处理 show 展示文本
xpinyin 拼音 汉字转拼音
NLTK 自然语言处理
4、数据可视化
matplotlib 图像处理
TVTK 三维
mayavi 可视化之后就may(美了)
vispy
5、用户图形界面
PyQt5 图像界面 PQ5 5代图像
wxPython 微信界面
PyGTK gif图片
6、机器学习
lscikit - learn
TensorFlow flow思维涌动
Theano
mxnet 神经网络节点
keras 克瑞斯 智能
PyTorch torch 他人吃 智能
7、Web开发
Django 张狗
Pyramid ramid 瑞米网站
Flask flash--的网站
pylons lon龙网站
8、游戏
pygame
2Panda3D 2D,3D的游戏
3cocos2d
9、更多
PIL 图像处理
SymPy
WeRoBot 微信公众号
MyQR 二维码
loso 自然语言处理
Luminoth 机器视觉
TimeSide 网络音频处理框架
PyOCR图像识别
标准库和第三方库一样,使用时需要import