加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

day17:内置方法&math模块&random模块&pickle模块

发布时间:2020-12-20 09:56:18 所属栏目:Python 来源:网络整理
导读:内置方法 1.round:四舍五入? 正常遵守四舍五入,但在n.5结构中,n为偶数则舍去,n为奇数则进一. res1 = round(4.51) # 5 res2 = round(4.5) 4 res3 = round(3.5) 4 res4 = round(4.12) 4 2.abs:绝对值函数 res = abs(-100) 100 3.sum:计算一个序列的和 lst = [-

内置方法

1.round:四舍五入?

正常遵守四舍五入,但在n.5结构中,n为偶数则舍去,n为奇数则进一.

res1 = round(4.51) # 5
res2 = round(4.5)  4
res3 = round(3.5)  4
res4 = round(4.12)  4

2.abs:绝对值函数

res = abs(-100)  100

3.sum:计算一个序列的和

lst = [-100,20,90,35]
res = sum(lst)  45

4.max min:获取一个序列里面的最大(最小)值

lst = [-100,1)">]
 max    获取一个序列里边的最大值
res = max(lst)
print(res)
 min    获取一个序列里边的最小值
res = min(lst)
print(res)

扩展:max min与func形成高阶函数

lst = [("Alan",81),(CatHurt1dao)]

def func(n):
    return n[-1]  按照年龄返回
"""
70 => ("1dao",70)
71 => ("Hurt",71)
81 => ("Alan",81)
82 => ("Cat",82)
"""
res = max(lst,key=func)
res = min(lst,1)">func)
print(res)
dic = {Giao":-100,Mojo":45,1)">Song":-70}
 print(n)
    return abs(dic[n])
res = max(dic,1)">(res)

 改写成lambda表达式
res = max(dic,key = lambda n : abs(dic[n]))
print(res)

5.pow:计算某个数值的x次方

pow(参数1,参数2[,参数3]) 参数3代表的是取余数
res = pow(2,3)
res = pow(2,3,3)  2
res = pow(2,4)  0

6.range:产生指定范围数据的可迭代对象

'''range(start,end,step)'''
for i in range(1,11,1)">):
    print(i)  1 4 7 10 
in range(11,-3 11 8 5 2 ...

7.bin oct hex:十进制转化成2/8/16进制

 bin    将10进制数据转化为二进制
res = bin(255)
 oct    将10进制数据转化为八进制
res = oct(87 hex    将10进制数据转化为16进制
res = hex(255print(res)

8.chr ord:ASCII码和字符之间的相互转换

 chr    将ASCII编码转换为字符
res = chr(97print(res)  "A"
# ord    将字符转换为ASCII编码
res = ord(A" 97

9. eval exec:将字符串当作python代码执行

 eval   将字符串当作python代码执行
strvar = print('深圳的天气可真的太热了,受不了')"
 strvar = "a = 90" error 不能执行
eval(strvar)
exec 将字符串当作python代码执行(功能更强大) 注意点:在与用户交互的时候,慎用 strvar = a = 90exec(strvar) (a) strvar放循环代码一样可以执行 strvar = for i in range(10): print("你是大傻瓜") """ exec(strvar)

10.repr:不转义字符输出字符串

strvar = E:nython31_gxday17print(repr(strvar))

11.input:接受输入字符串 (永远接受的是字符串)

name = input(你妈贵姓?print(name)

12.hash:生成哈希值

相同的两个数据经过哈希算法运算得出的结果一定相同
res1 = hash(abc)
res2 = hash((res1,res2)


1.文件校验
2.密码加密


with open(ceshi1.txtr+utf-8) as fp:
    strvar1 = fp.read()
    res1 = hash(strvar)

with open(ceshi2.txt) as fp:
    strvar2 = fp.read()
    res2 = hash(strvar)
print(res1 == res2)

math模块

 ### 数学模块
import math

ceil()  向上取整操作 (对比内置round)*
res = math.ceil(4.9)  5
res = math.ceil(-3.5)  -3
 floor() 向下取整操作 (对比内置round)*
res = math.floor(3.9)  3
res = math.floor(-3.8)  -4
 pow()  计算一个数值的N次方(结果为浮点数) (对比内置pow)
res = math.pow(2,1)"> 8 res = math.pow(2,3) error # 只有2个参数
 结果一定是小数:8.0

 sqrt() 开平方运算(结果浮点数)*
res = math.sqrt(9 结果一定是小数:3.0

 fabs() 计算一个数值的绝对值 (结果浮点数) (对比内置abs)
res = math.fabs(-99 99.0

 modf() 将一个数值拆分为整数和小数两部分组成元组*
res = math.modf(13.45 (0.4499999999999993,13.0)

 copysign()  将参数第二个数值的正负号拷贝给第一个 (返回一个小数)*
res = math.copysign(-13,-1 返回一个小数

 fsum() 将一个容器数据中的数据进行求和运算 (结果浮点数)(对比内置sum)
lst = [1,2,4,6]
res = math.fsum(lst)
圆周率常数 pi*
res = math.pi
print(res)

random模块

 ### random 随机模块
 random

 random() 获取随机0-1之间的小数(左闭右开) 0<= x <1
res = random.random()
 randrange() 随机获取指定范围内的整数(包含开始值,不包含结束值,间隔值) ** 一个参数
res = random.randrange(5)  0~4 二个参数
res = random.randrange(2,8)  2~7  三个参数
res = random.randrange(1,10,1)"> 1,7
 randint()   随机产生指定范围内的随机整数 (了解)
res = random.randint(3,1)"> 3,4 res = random.randint(3) error res = random.randint(3,7,2) error # 3 5 7
 uniform() 获取指定范围内的随机小数(左闭右开)
res = random.uniform(1,1)"> 1<=x<3 小数

 return a + (b-a) * self.random()

a=3,b=1
3 + (1-3) * x = 0 => 3
3 + (1-3) * x = 1 => 1
1<x<=3

res = random.uniform(3,1choice()  随机获取序列中的值(多选一)
lst = [刘鑫刘子豪孙致和高旭峰戈隆 random.choice(lst)
 mychoice(lst):
    num = random.randrange(len(lst))  0 1 2 3 4
     lst[num]
res = mychoice(lst)
 lambda 表达式
func =  lst : lst[random.randrange(len(lst))]
(func(lst))

sample()  随机获取序列中的值(多选多) [返回列表]
lst = []
res = random.sample(lst,1)">)
res = random.sample(lst,2shuffle() 随机打乱序列中的值(直接打乱原序列)
lst = []
random.shuffle(lst)
print(lst)

用random模块实现验证码的生成

 yanzhengma():
     验证码当中含有小写字母,大写字母,数字
     小写字母:97~122    
    strvar = ""    
     随机抽4次
    in range(4):
        s_char = chr(random.randrange(97,123))
         大写字母:65~90
        b_char = chr(random.randrange(65,91 # 0~9
        num = str(random.randrange(10)) 
        lst = [s_char,b_char,num]
        strvar += random.choice(lst)
     strvar
res = yanzhengma()
print(res)

pickle模块

1.什么是序列化和反序列化?

不能够直接存储的数据变得可存储,这个过程叫做序列化
把文件中的数据拿出来,恢复成原来的数据类型,这个过程叫做反序列化

2.为什么要序列化?

在文件中存储的数据只能是字符串 或者是 字节流,不能是其他数据类型
如果想要存储,需要序列化.

3.Pickle的功能究竟有多强大?

pickle模块可以序列化一切数据类型

一个错误的示范

with open(ceshi0727.txtw) as fp:
    fp.write(lst)
 只有字符串可以使用encode 和 decode 转换字节流
lst.encode() error

容器类型的序列化和反序列化

 容器类型数据可以被序列化dumps 把任意对象序列化成一个bytes
res = pickle.dumps(lst)
loads 把任意bytes反序列化成原来数据
lst = pickle.loads(res)
print(lst,type(lst))

函数的序列化和反序列化

 func():
    print(我是最帅的! 序列化
res = pickle.dumps(func)
 反序列化
func = pickle.loads(res)
func()

迭代器的序列化和反序列化

 迭代器可以序列化 序列化
it = iter(range(10))
res = pickle.dumps(it)

 反序列化
it =in it:
    print(i)

dump和load(针对文件对象)

dump  把对象序列化后写入到file-like Object(即文件对象)
lst = ["Fly"DjieMiGod]
with open(0728.txtwb) as fp:
     dump(数据,文件对象)
    pickle.dump(lst,fp)

load  把file-like Object(即文件对象)中的内容拿出来,反序列化成原来数据
with open(rb) as fp:
    res = pickle.load(fp)
    print(res,type(res))

用dumps和loads对文件进行操作

 dumps 和 loads 对文件操作 (区分)
lst = ["Alan"Dnan"LiangC pickle.dumps(lst)
with open(0729.txt) as fp:
    fp.write(res)

with open( fp.read()
    (res)
    lst = pickle.loads(res)
    (编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读