• day16.内置方法与模块


    一、内置方法

    1、abs 绝对值函数

    res = abs(-100)
    print(res)

    2、round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数,则进一!)

    """特点:奇进偶不进"""
    res = round(4.51)
    # res = round(4.5) # 4
    # res = round(3.5) # 4
    print(res)

    3、sum    计算一个序列得和

    lst = [-100,20,90,35]
    res = sum(lst)
    print(res)
    
    def func(lst):
        total = 0
        for i in lst:
            total += i
        return total
    print(func(lst))
    View Code

    4、max  min   获取一个序列里边的最大值 最小值

    lst = [-100,20,90,35]
    # max    获取一个序列里边的最大值
    res = max(lst)
    print(res)
    # min    获取一个序列里边的最小值
    res = min(lst)
    print(res)
    
    # 自定义方法
    lst_new = sorted(lst)
    print(lst_new)
    maxval = lst_new[-1]
    minval = lst_new[0]
    print(maxval,minval)
    max min

    高级用法

    lst = [("袁伟倬",81),("李虎玲",82),("刘鑫炜",71),("孙京华",70)]
    
    def func(n):
        # print(n)
        return n[-1] # 按照年龄返回
    """
    70 => ("孙京华",70)
    71 => ("刘鑫炜",71)
    81 => ("袁伟倬",81)
    82 => ("李虎玲",82)
    """
    res = max(lst,key=func)
    res = min(lst,key=func)
    # res = max(lst)
    print(res)
    
    
    print("<=========>")
    dic = {"李虎玲":-100,"刘鑫炜":45,"袁伟倬":-70}
    def func(n):
        # print(n)
        return abs(dic[n])
    res = max(dic,key=func)
    print(res)
    
    # 改写成lambda表达式
    res = max(dic,key = lambda n : abs(dic[n]))
    print(res)
    max min高级用法

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

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

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

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

    7、bin oct hex 将10进制数据转化为二进制 八进制 十六进制

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

    8、chr 将ASCII编码转换为字符  ord 将字符转换为ASCII编码

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

    9、eval 将字符串当作python代码执行

    strvar = "print('深圳的天气可真的太热了,受不了')"
    # strvar = "a = 90" error 不能执行
    eval(strvar)
    View Code

    10、exec 将字符串当作python代码执行(功能更强大)

    """注意点:在与用户交互的时候,慎用"""
    strvar = "a = 90"
    exec(strvar)
    print(a)
    
    strvar = """
    for i in range(10):
        print("你是大傻瓜")
    """
    exec(strvar)
    View Code

    11、repr 不转义字符输出字符串

    strvar = "E:
    ython31_gxday17"
    print(repr(strvar))
    View Code

    12、input  接受输入字符串 (永远接受的是字符串)

    """
    name = input("你妈贵姓?")
    print(name)
    """
    View Code

    13、hash  生成哈希值

    """相同的两个数据经过哈希算法运算得出的结果一定相同"""
    res1 = hash("abc")
    res2 = hash("abc")
    print(res1,res2)
    View Code
    """
    1.文件校验
    2.密码加密
    """
    
    with open("ceshi1.txt",mode="r+",encoding="utf-8") as fp:
        strvar1 = fp.read()
        res1 = hash(strvar)
    
    with open("ceshi2.txt",mode="r+",encoding="utf-8") as fp:
        strvar2 = fp.read()
        res2 = hash(strvar)
    # print(res1 == res2)
    View Code

    二、数字模块

    import math

    1、ceil()  向上取整操作 (对比内置round)*

    res = math.ceil(4.9)
    res = math.ceil(-3.5)
    print(res)
    View Code

    2、floor() 向下取整操作 (对比内置round)*

    res = math.floor(3.9)
    res = math.floor(-3.8)
    print(res)
    View Code

    3、pow()  计算一个数值的N次方(结果为浮点数) (对比内置pow)

    res = math.pow(2,3)
    # res = math.pow(2,3,3) error # 只有2个参数
    print(res) # 结果一定是小数:8.0
    View Code

    4、sqrt() 开平方运算(结果浮点数)*

    res = math.sqrt(9)
    print(res) # 结果一定是小数:3.0
    View Code

    5、fabs() 计算一个数值的绝对值 (结果浮点数) (对比内置abs)

    res = math.fabs(-99)
    print(res) # 99.0
    View Code

    6、modf() 将一个数值拆分为整数和小数两部分组成元组*

    res = math.modf(13.45)
    print(res) # (0.4499999999999993, 13.0)
    View Code

    7、copysign()  将参数第二个数值的正负号拷贝给第一个 (返回一个小数)*

    res = math.copysign(-13,-1)
    print(res) # 返回一个小数
    View Code

    8、fsum() 将一个容器数据中的数据进行求和运算 (结果浮点数)(对比内置sum)

    lst = [1,2,3,4,6]
    res = math.fsum(lst)
    print(res) # 返回一个小数
    View Code

    9、圆周率常数 pi*

    res = math.pi
    print(res)
    View Code

    三、random 随机模块

    import random

    1、random() 获取随机0-1之间的小数(左闭右开) 0<= x <1

    res = random.random()
    print(res)
    View Code

    2、randrange() 随机获取指定范围内的整数(包含开始值,不包含结束值,间隔值) **

    # 一个参数
    res = random.randrange(5) # 0~4
    # 二个参数
    res = random.randrange(2,8) # 2~7 
    # 三个参数
    res = random.randrange(1,10,3) # 1,4,7
    print(res)
    View Code

    3、randint()   随机产生指定范围内的随机整数 (了解)

    res = random.randint(3,4) # 3,4
    # res = random.randint(3) error
    # res = random.randint(3,7,2) error # 3 5 7
    print(res)
    View Code

    4、uniform() 获取指定范围内的随机小数(左闭右开)

    res = random.uniform(1,3) # 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,1)
    print(res)
    View Code

    5、choice()  随机获取序列中的值(多选一)

    lst = ["刘鑫","刘子豪","孙致和","高旭峰","戈隆"]
    res = random.choice(lst)
    print(res)
    
    def mychoice(lst):
        num = random.randrange(len(lst)) # 0 1 2 3 4
        return lst[num]
    res = mychoice(lst)
    print(res)
    
    # lambda 表达式
    func = lambda lst : lst[random.randrange(len(lst))]
    print(func(lst))
    View Code

    6、sample()  随机获取序列中的值(多选多) [返回列表]

    lst = ["刘鑫","刘子豪","孙致和","高旭峰","戈隆"]
    res = random.sample(lst,1)
    res = random.sample(lst,2)
    print(res)
    View Code

    7、choices() 随机获取序列中的值(多选多) [返回列表] 指定参数k

    lst = ["刘鑫","刘子豪","孙致和","高旭峰","戈隆"]
    res = random.choices(lst,k=2)
    print(res)
    View Code

    8、shuffle() 随机打乱序列中的值(直接打乱原序列)

    lst = ["刘鑫","刘子豪","孙致和","高旭峰","戈隆"]
    random.shuffle(lst)
    print(lst)
    View Code

    9、验证码

    def yanzhengma():
        # 验证码当中含有小写字母,大写字母,数字
        # 小写字母:97~122    
        strvar = ""    
        # 随机抽4次
        for i 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)
        return strvar
    res = yanzhengma()
    print(res)
    View Code

    四、序列化模块 pickle

    """
    把不能够直接存储的数据变得可存储,这个过程叫做序列化
    把文件中的数据拿出来,回复称原来的数据类型,这个过程叫做反序列化
    
    php serialize
        unserialize
        
    在文件中存储的数据只能是字符串 或者是 字节流,不能是其他数据类型
    如果想要存储,需要序列化.
    
    pickle模块可以序列化一切数据类型
    """
    import pickle

    1、列表可以直接写入文件吗?

    import pickle
    
    lst = ["马生平","超晨光","吴洪昌"]
    # 错误案例
    with open("ceshi0727.txt",mode="w",encoding="utf-8") as fp:
        fp.write(lst)
        
    # 只有字符串可以使用encode 和 decode 转换字节流
    lst.encode() error
    View Code

    2、容器类型数据可以被序列化

    #dumps 把任意对象序列化成一个bytes
    res = pickle.dumps(lst)
    print(res)
    
    #loads 把任意bytes反序列化成原来数据
    lst = pickle.loads(res)
    print(lst,type(lst))
    View Code

    3、函数可以序列化

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

    4、迭代器可以序列化

    序列化
    it = iter(range(10))
    res = pickle.dumps(it)
    
    # 反序列化
    it = pickle.loads(res)
    for i in it:
        print(i)
    View Code

    5、dump、load 与 dumps、loads文件操作

    #dump  把对象序列化后写入到file-like Object(即文件对象)
    lst = ["马生平","超晨光","吴洪昌"]
    with open("0728.txt",mode="wb") as fp:
        # dump(数据,文件对象)
        pickle.dump(lst,fp)
    
    #load  把file-like Object(即文件对象)中的内容拿出来,反序列化成原来数据
    with open("0728.txt",mode="rb") as fp:
        res = pickle.load(fp)
        print(res,type(res))
    dump load
    lst = ["马生平","超晨光","吴洪昌"]
    res = pickle.dumps(lst)
    with open("0729.txt",mode="wb") as fp:
        fp.write(res)
    
    with open("0729.txt",mode="rb") as fp:
        res = fp.read()
        print(res)
        lst = pickle.loads(res)
        print(lst , type(lst))
    dumps loads
  • 相关阅读:
    获取Spring容器中的Bean
    Log4j 配置 的webAppRootKey参数问题
    关于Eclipse项目中加入jquery.js文件报错(missing semicolon)问题
    SSO(单点登录)
    MySQL拷贝表的几种方式
    Maven的简介
    Maven 的41种骨架功能介绍
    Intellij IDEA 快捷键大全
    nginx基本配置与参数说明
    MYSQL和ORACLE的一些区别
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/13387394.html
Copyright © 2020-2023  润新知