python知识点总结
数据类型
数字
- 浮点数:有小数点的数字
- 整数:没有小数点的数字
字符串(字符序列)
布尔类型
- False(0)
- True(1)
运算符
算数运算符
运算符 | 说明 | 实例 | 结果 |
---|---|---|---|
/ | 除 | 7/2 | 3.5 |
% | 求余 | 7%2 | 1 |
/ / | 取整除 | 7//2 | 3 |
比较运算符
- 等于号是“==”
- 不等于是“!=”
逻辑运算符
- and 有假的就输出假的,没有假的就输出最后一个真的
- or 和and相反
- not(结合方向是从右到左)
流程控制语句
选择语句
1.if…elae语句的简写
a = -9
if a > 0:
b = a
else:
b = -a
print(b)
可简写为
a = -9
b = a if a>0 elae -a
print(b)
2.在多个if…elif…else语句中,elif和else都是从属前面第一个if
"""
用单个while配合if条件,循环九次打印下列矩阵:
11 12 13
14 15 16
17 18 19
"""
#错误解法一:
i = 10
while True:
if i > 18:
break
else:
i += 1
if i==13:
print(i,'\n')
if i==16:
print(i,'\n')
if i==19: #下面的else从属这个if语句
print(i,'\n')
else:
print(i,end=' ')#当else前有多个if语句时,else默认从属于它上面离他最近的if
将第二、第三个if改为elif即可
循环语句
continue、break、pass语句
这仨一般都是结合if语句搭配使用
- continue:跳过当前循环的剩余语句块,进入下轮循环
- break:跳出循环
- pass:表示空语句,什么都不做
- 假设你在400m田径场跑步
- continue:跑了一下,发现忘记计时了——重新回起点重新跑一圈
- break:跑了一下,舍友叫你去喝奶茶——算了不跑了,胖死我吧
- pass: 跑着跑着,突然摔了个狗吃屎——爬起来发现没人看见,拍拍灰尘继续跑
组合数据类型
概述:
- 索引
- 正数索引:从0开始(左边)
- 负数索引:从-1开始(右边)
- 切片
verse[start:end:step]
1.列表
2.元组(有顺序,创建后不能修改)
3.集合(没有顺序的不可以重复的数据)
4.字典(用户可以自己定义索引的序列,字典类型是映射的体现)
字符串
字符串与列表很相似,正如前面提到的,字符串是字符序列。
字符串编码转化
- encode()编码
- decode()解码
字符串常用操作
-
拼接与截取
- 拼接直接用”+”
- 截取类似列表的切片:string[start:end:step]
-
分割与合并
- str.split(sep,maxsplit)
- newstr = string.join(iterable)
-
计算长度
- len()
-
检索
- count()
- find()
- index()
-
字母大小写转换
- lower()
- upper()
-
格式化
- 使用%操作符(不推荐)
- format()
函数
创建函数:
def functionname([parameterlist]):
[fuctionbody]
functionname:函数名
parameterlist:可选参数,用于指定向函数中传递的参数。如果有多个参数,那么参数之间用逗号隔开
functionbody:用于指定函数体
异常处理
异常 | 描述 |
---|---|
IOError | 输入输出错误(如要读取的文件不存在) |
AttributeError | 尝试访问位置的对象属性引发的错误 |
IndetationError | 缩进错误 |
MemoryError | 内存不足 |
ZeroDivisionError | 除数为0 |
语法:
try:
[语句块1]
except (xxError):#except后面不指定异常名称,则表示捕获全部异常
[语句块2]#try语句块中出粗,执行except语句块
else:
[语句块3]#try语句块没有出错则执行else的语句块
finally:
[语句块4]#无论是否引发了异常,finally的子句都会执行
except xxError as x语句:
try:
[语句块]
except (ValueError,ZeroDivisionError) as e:
print('出错了!错误是:',e)
如果想捕获全部异常,那么将整个括号和括号内容换成Exception
文件操作
file = open(filename[,mode[,buffering]])
- file:被创建的文件对象
- filename:要创建或者打开文件的文件名称
- mode:可选参数,指定文件的打开模式
值 | 说明 | 注释 |
---|---|---|
r | 以只读模式打开文件,文件的指针将会放在文件的开头 | 文件必须存在 |
r+ | 打开文件后,可以读取文件内容,也可以写入新的内容覆盖原有内容 | 文件必须存在 |
w | 以只写模式打开文件 | 文件存在,则将其覆盖,否则创建新文件 |
w+ | 打开文件后,先清空原有内容,使其变为一个空的文件,对这个空文件有读写权限 | 文件存在则将其覆盖,否则创建新文件 |
a | 以追加模式打开一个文件,如果该文件已经存在,文件指针将放在文件末尾,新内容卸载已有内容后面,否则创建新文件用于写入 | |
a+ | 以读写模式打开文件,如果该文件已存在,文件指针将放在文件末尾,否则创建新文件用于写入 |
写入文件后,一定要调用close()函数关闭文件,否则写入的内容不会保存到文件中。这是因为我们再写入文件内容时,操作系统不会立刻把数据写入磁盘,而是先缓存起来。 ps:也可以调用flush()函数,把缓冲区的内容写入文件。(这种方法不会关闭文件
建议用with语句打开文件,此语句执行完后会自动关闭文件:
with expression as target:
[语句体]
题目
第一题
17 != 19 and 5
and的左边,17不等于19这个句子是对的,True的值是1
and一出现错的语句块就返回错的,全都是对的,就返回最后一个对的。
所以答案是5
第二题
7 or 18
or一出现对的语句块就返回对的,全都是错的,就返回最后一个错的
第三题
(not 3) + 5
not加一个对的东西就是错的
第四题
round(2.5)
round()函数会将括号内的数字四舍五入,变成相应小数位数的数字
例如round(1.111,2)
意思是将1.111保留两位小数,结果是1.11
当没有指定多少位数时,默认取整数
本来这题的答案应该是3的,但是由于二进制的问题,答案为2
第五题
int('22', 16)
题目意思是求16进制下的’22‘
答案是34
第六题
#下列哪个变量名称是非法的:
#input_, A!, a_b, Int
大小写字母,下划线,数字才能命名,而且数字不能放在首位
答案是"A!"
第七题
a = [8, 2, 8]
b = sum(a)
print(b)
sum()函数是可以将列表中的所有元素加起来
不过要求列表中的元素都可以相加
数字和布尔类型都可以,但是字符串不行
第八题
if True :
print('Song', 111)
elif True:
print('Jinlong', 222)
else:
print('SongJinlong', 2582)
在循环中,if语句是分支,只经过一条路
if执行后,下面的elif和else不执行
第九题
a = [10, 17, 19, 10]
b = a[:0:-1]
print(b)
-1表示逆序,从右到左
结束位是0(不包括在内)
所以答案是[10,19,17]
第十题
a = [ ]
a.extend([27, 72])
print(a)
extend()函数将一个列表添加到另一个列表
第十一题
a = [86, 87, 59, 52]
b = a
a[0] = 11
print(b)
答案是[11,87,59,52]
我惊了
列表b等于列表a,列表a的元素改变时,列表b的对应元素也改变
666
但是,如果是b = a.copy()就不会改变
第十二题
x = '甲乙丙丁甲乙丙甲乙'
y = x.index('甲') + x.count('甲')
print( y )
x.index(‘甲’)返回值为列表中’甲‘第一次出现的索引
第十三题
def 舜滢(x):
x[0] = 357
return None
a = [4,5,6]
b = 舜滢(a)
print(a, b)
答案是[357,5,6]none
列表a进入函数后,第0项改成了357
return none所以返回值是none,但是列表a的第一个元素已经改变了
第十四题
def func(a, b, *p):
print(p)
func(9, 0, 2, 4, 6)
答案是(2,4,6)
*p代表第三个到最后一个参数,返回的p是元组
第十五题
def func(x, y=22, **p):
print(p)
func(1, y=12, name='Tony', age=23
"**p"将输入的p变成字典