python期末复习----上

python期末复习

注意:本文仅仅是自己复习所用,只包含我所需要熟悉的知识点

续行

一行打不满,需要换行,但是输出的是一行的内容,用()或\

x = (1+2+3+
     4+5)
y = 2+4+6+\
    8+11
print(x,y)

math模块

包含常量和一些算式

import math

print(math.pi)#pi
print(math.tau)#2pi
print(math.e)#自然常数e

import math

x = 1.2
print(math.ceil(x))#向上取整
print(math.floor(x))#向下取整

print(math.comb(3,2))#组合
print(math.perm(3,2))#排列
print(math.factorial(5))#5!

print(math.copysign(2,-4))#取x的值和y的符号返回浮点数

print(math.gcd(8,4))#返回最大公约数
print(math.lcm(8,4))#返回最大公倍数

print(math.isclose(2.2,2.0,rel_tol=0.2,abs_tol=0.2))#是否接近

print(math.exp(2))#e的二次方
print(math.log(2,2))#以2为底数,x取2,如果底数没有写,默认为ln
print(math.log2(2))#等价,更精确

print(math.pow(2,4))#2的四次方
print(math.sqrt(4))#开根号

print(math.sin(math.pi/4))#sin (Π/4)其余的三角函数一样

print(math.dist((1,2),(3,4)))#计算两点欧氏距离
print(math.hypot(1,2))#计算欧式范数

print(math.inf)#正无穷
print(-math.inf)#负无穷
print(math.isinf(math.inf))#判断是否是无穷

print(math.prod((1,2,3)))#计算元组内元素的乘积

print(math.remainder(2,5))#取2相较于5的余数

print(math.degrees(2*math.pi))#转化为度数
print(math.radians(180))#转化为弧度制


random模块

random

生成一个[0,1)的伪随机数

import random
rand1 = random.random()
rand2 = random.random()
print(rand1,rand2)

randint

import random
print(random.randint(1,50))

注意1,50都是可以被取到的

randrange

在[start,end)中随机生成一个元素

import random
print(random.randrange(1,100,2))

这里的2意思是只能取奇数。

choice

从列表、元组、字符串等中随机选一个元素,如果要选多个元素用sample

import random

item = ['a','b','c','d','e']
print(random.choice(item))

shuffle

shuffle打乱排序,会随机生成一个顺序

import random
item = [1,2,3,4,6,5,7,9,8,0]
random.shuffle(item)
print(item)

sample

在一组字符串中随机选指定个数的字符随机组成一个新的字符

import random
str = ''.join(random.sample('radfdsfsadasdasdwdasdasdw',8))
print(str)

操作符

算数操作符

+
-
*
/	#3/2返回1,但3.0/2返回1.5
//	#3.0//2返回1.0
%   #取余
**  #a**2  a的二次幂
pow(x,y)  #pow(a,2)

赋值操作符

=
+=
-=
/=
//=
**=
*=
%=

比较操作符

==
!=
<>  #跟1=一个意思:3<>2返回True
>
<
>=
<=
全返回bool值

逻辑

and 两个都为真则返回真,否则为假
or  两个都为假才返回假,否则为真
not

成员

in
not in

python标准数据类型

1、number

int
float
bool
complex
complex
c = 3+4j
print(c+c)
print(c**2)
print(c.real)#实部
print(c.imag)#虚部
print(3+4j.imag)虚部
print(c.conjugate())#共轭复数
print(abs(c)) #模

2、string

字符串是不可变元素,他的所有方法是对返回值进行修改而不是对字符串本身进行修改

字符串的常用方法
encode()、decode()

编码转化器
编码常见的有

ASCII
UTF-8
UTF-16
GBK等

python,encode()默认转化为UTF-8

str = '你好世界'
print(str.encode())
print(str.encode('gbk'))
print(str.encode('gbk').decode('gbk'))

output:

b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'
b'\xc4\xe3\xba\xc3\xca\xc0\xbd\xe7'
你好世界
format()
print('0:.4f'.format(10/3))#0表示进行format操作的索引,.4f表示保留四位小数
print('0:>10.2%'.format(1/3))#格式化为百分数字符串,总宽度为10,保留两位小数,>表示向右对齐
print("{0:,} in hex is: {0:#x},int oct is {0:#o}".format(55555))#这里的,作为千分位符
print("{1} in hex is {1:#x},{0} in oct is {0:#o}".format(555,6666))

output:

0:.4f
0:>10.2%
55,555 in hex is: 0xd903,int oct is 0o154403
6666 in hex is 0x1a0a,555 in oct is 0o1053

把字母f放在字符串前,可以这样写:

width = 90
height = 180
print(f"小明体重{width},身高{height}")

output

小明体重90,身高180
index()、rindex()、count()

index(元素):第一次出现的索引
rindex(元素):最后一次出现的索引
count(元素):数量

text = "122334444555566666"
print(text.index('4'))
print(text.rindex('5'))
print(text.count('2'))
replace()、maketrans()、translate()

replace(a,b)返回用b替换a后的字符串,所以可以拼接在一起
replace(a,b).replace(c,d).replace(…)

a = '我好帅'
print(a.replace('我','你').replace('帅','丑'))

maketrans(a,b),a、b的长度必须一样长

table = ''.maketrans('0123456789','零一二三四五六七八九')
print('32432445'.translate(table))

output

三二四三二四四五
位置摆放ljust()、rjust()、center()

ljust(空的格数,剩余格子的字符)

print('你'.ljust(20))
print('好'.rjust(20,'#'))
print('帅'.center(20,'='))

output:

你                   
###################好
=========帅==========
对字符串切割split()、rsplit()、join()
text = '你是个大帅逼'
print(text.split())#用空白符号分割
print(text.split(maxsplit = 2))#最高分割次数为2次
print(text.rsplit(','))#用逗号进行分割
print(','.join(['1','2','3','4']))#用逗号作为连接符,将他们连接
lower()、upper()、capitalize()、title()、swapcase()
text = 'BEtter Than Ever'
print(text.upper())
print(text.lower())
print(text.capitalize())#第一个字母是大写,其他是小写
print(text.title())#每个单词第一个字母是大写
print(text.swapcase())#大的变成小的,小的变成大的

output:

BETTER THAN EVER
better than ever
Better than ever
Better Than Ever
beTTER tHAN eVER

strip()、rstrip()、lstrip()
text = '   ========test===###    '
print(text.strip())#删除两边的空格
print(text.rstrip('='))
print(text.lstrip('#'))
========test===###
   ========test===###    
   ========test===###  
startwith()、endwith()

用什么开头用什么结尾

3、bytes

以b开头

b'你好世界'

4、list

列表的元素可以是各种类型,相邻元素用逗号隔开

[]空列表
x = [1,2,3,4,5,6,'你好',(1,2),\
	{'学号':12345,'姓名':'Dell'},[1,2,3,4,5]]#生成列表

b = list((1,2,3,4,5)) #list转换成列表

c = list(range(1,10,2))

d = list(map(str,range(10)))

list(map(str,range(5)))
list(zip('abcd',[1,2,3,4])) 
list(enumerate('python')) 
list(filter(str.isdigit),'a1b2c3d4')


(1) 列表常用方法
append()、insert()、extend()

append() #在末尾插入元素
insert(位置索引,插入的元素)
extend()#将可迭代对象如列表、字符串、元组等内的元素分别插入到末尾,而不是将可迭代对象作为一个整体的元素插入末尾(与append的区别)

lst = [1,2,3,4]
lst.append(5)
1st.insert(0,0)
lst.insert(2,1.5)
lst.extend([6,7])
print(lst)
pop()、remove()
lst = [1,2,3,4,5,6]
print(lst.pop()) #删除最后一个元素,并返回值,这里打印的是返回值
print(lst.pop(2)) #删除下标为2的元素,并返回值,后面的元素向前移动
print(lst)

print(lst.remove(2)) #删除第一个2,不返回元素 
print(lst)

输出:

6
3
[1, 2, 4, 5]
None
[1, 4, 5]
sort()、reverse()都没有返回值
from random import sample

data = sample(range(1000),10)#找出10个不重复的随机数
print(data)
data.reverse()
print(data)
data.sort()#按大小排序
print(data)
data.sort(key=str)#按转换成字符串后的大小排序
print(data)
count()、index()
lst = [1,1,2,2,2,3,3,3,3,3,4,4,4,4,4,4]
print(lst.count(2))
print(lst.index(4))
(2)列表推导式
[<expression> for <item> in <iterable> if <condition>]
生成平方数列表
squares = [x**2 for x in range(1,6)]
print(squares)

output

[1, 4, 9, 16, 25]
筛选偶数
numbers = [1,2,3,4,5,6,7,8,9,10]
evens = [x for x in numbers if x%2 == 0]
print(evens)

output

[2, 4, 6, 8, 10]
字符串操作
fruits = ['apple','banana','orange']
upper_fruits = [fruit.upper() for fruit in fruits]
print(upper_fruits)

output:

['APPLE', 'BANANA', 'ORANGE']
嵌套列表推导式
matrix = [[i*j for i in range(1,4)]for j in range(1,4)]
print(matrix)

output

[[1, 2, 3], [2, 4, 6], [3, 6, 9]]
带条件嵌套表达式
a = [1,2,3,4,5,6,7,8]
b = [1,2,3,4,5,6,7,8]
c = [(x,y) for x in a for y in b if x==y]
d = list(zip(a,b))
print(c)
print(d)
print(c == d)

output

[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8)]
[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8)]
True
(3)切片操作
data = list(range(20))
print(data[:])#获取所有元素
print(data[:3])#获取下标为0的元素到下标为2的元素
print(data[3:])#下标3及之后的元素
print(data[::3])#每3个元素取一个
print(data[-3:])#负数的话start在end的右边,这里是最后三个元素
print(data[:-5])#除了最后五个元素之外的所有元素
print(data[3::2])

output

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 1, 2]
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 3, 6, 9, 12, 15, 18]
[17, 18, 19]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
[3, 5, 7, 9, 11, 13, 15, 17, 19]

5、dictionary

生成字典
一个字典的一个元素是
{key = value}

生成字典的方法:

data = dict(name = '张三',age = 18,sex = 'M')
print(data)
data = dict(zip(['name','age','sex'],['张三',18,'M']))
print(data)
data = {ch:ord(ch) for ch in 'abcd'}
print(data)

output:

{'name': '张三', 'age': 18, 'sex': 'M'}
{'name': '张三', 'age': 18, 'sex': 'M'}
{'a': 97, 'b': 98, 'c': 99, 'd': 100}
字典元素的访问
data = dict(name = '张三',age = 18,sex = 'M')
print(data['name'])  #key作为下标访问
#或者
print(data.get('name'))
list(data)#将所有键转化为一个列表
list(data.values)#将所有值转化为列表
list(data.items())#将所有元素转化为列表
for key,value in data.items():
	print(key,value,sep = '\t')#sep = '\t'是制表符

output:

张三
张三
name	张三
age	18
sex	M
元素的修改
data[key] = '....'
如果这个key存在,则换值,如果不存在则添加元素
data = {'name': '张三', 'age': 18, 'sex': 'M', 'num': 123}
data['name'] = '李四'
data['num'] = 123
print(data)
{'name': '李四', 'age': 18, 'sex': 'M', 'num': 123}
元素的增删update()、pop()、popitem()

update:

data = {'name': '张三', 'age': 18, 'sex': 'M', 'num': 123}
print(data.pop('name'))
del data['age']
print(data.popitem())#这里打印的是返回值,popitem()删除的最后一个元素
print(data)

6、set

(1)注意事项

集合是无序、可变的容器对象,所有元素放在一对大括号内,元素之间逗号隔开,同一个集合内的元素是唯一的,不允许重复,常用来去重复值
集合只包含不可变类型数据:数字、字符串、元组等,不支持下标访问,不只是random的sample随机选取,不支持random的choice选取。

lst = [1,2,2,2,2,3,4,5,6]
b = list(set(lst))
print(b)

output

[1,2,3,4,5,6]
(2)集合常用方法
add(),update()
data = {2,3,4}
data.add(5)
data.add(2)#已经有2,则忽略此操作
data.update({4,6})#忽略4,添加6
print(data)
pop()、discard()、remove()
data = {3,4,5}
data.remove(3)
data.discard(3)
print(data.pop())#删除一个元素并返回其值
print(data)

7、tuple

(1)注意事项

1、元组只有一个元素要加个,

(3,)

2、tuple()转换成元组
3、元组不可变,不可以修改
4、元组可以作为字典的key,或者集合的元素,而列表不可以
含有列表的元组也不可以

(2)生成器表达式
gen = (2**i for i in range(8))
print(gen)
print(list(gen))
print(tuple(gen))
print(next(gen)) ##next()访问下一个元素
for item i gen:
	print(item,end = '')##end = ''表示不换行

output:

<generator object <genexpr> at 0x0000017AB4F764D0>
[1, 2, 4, 8, 16, 32, 64, 128]
()
1
248163264128
序列解包

序列解包可以用这样几个

x,y,z = 1,2,3
x,y,z = (1,2,3)
x,y,z = [1,2,3]
x,y,z = map(int,'123')
data = {'a':1,"b":2,"c":3}
x,y,z = data.values()
print(x,y,z)

常用内置函数

这里是除标准库之外的
abs(10) ----10
math.fabs(10)----10.0
max(1,2,3,4....)返回最大的
min()一样
round(x,n)返回x的四舍五入值,n表示舍入到小数点后几位
list(map(str,range(5)))----['0','1','2','3','4']
list(zip('abcd',[1,2,3,4])) ---- [('a',1),('b',2),('c',3),('d',4)]
list(enumerate('python')) ----[(0,'p'),(1,'y'),(2,'t'),(3,'h'),(4,'o'),(5,'n')]
list(filter(str.isdigit),'a1b2c3d4')----['1','2','3','4']

注意项:

1、实数之间尽量不要直接比较大小,而应该用isclose来代替。因为会有精度的差异。
import math

print(0.4-0.3==0.1)
print(math.isclose(0.4-0.3,0.1))

num = 7
a = num**0.5
print(a**2 == num)
print(math.isclose(a**2,num))
输出:
False	
True
False
True
random.randint(a,b)

只有这一个,是取的[a,b]里的数,其余的都是[a,b)

####3 ** 3 ** 2等于多少

操作数 操作符 操作数 操作符 操作数

是从左向右算的,所以这里是3**9,除非

(3**3)**2,这样是27 ** 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值