python函数之内置函数


python的内置函数

 

abs    绝对值函数

print(abs(-1))
print(abs(100))

round  四舍五入

奇进偶不进 n.5的情况特定发生

res = round(3.87)
res = round(4.51)
# res = round(2.5)打印结果 2
# res = round(3.5) 打印结果4
res = round(6.51)
print(res)

sum    计算一个序列得和

lst = [1,2,3,4,34]
res  = sum(lst)
print(res)

total = 0
for i in lst:
    total += i
print(total)

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

lst = (-100,1,2,3,4,34)
res = max(lst)
res = min(lst)
print(res)

max / min 的高阶函数的使用方式

tup = (   ("赵万里",100)  , ("赵沈阳",101) , ("孟凡伟",99) )
def func(n):
    # print(n)
    # 按照年龄找到最小值元组
    return n[-1]
    
res = min(tup,key=func)
print(res)
res = max(tup,key=func)
print(res)


dic = {"赵万里":100,"赵沈阳":200,"孟凡伟":-5000}
def func(n):
    # 如果是字典,默认传递的是键
    # print(dic[n])
    return abs(dic[n])
res = min(dic,key=func)
res = max(dic,key=func)
print(res)

pow    计算某个数值的x次方

如果是三个参数,前两个运算的结果和第三个参数取余

print(pow(2,3))
print(pow(2,3,7))
print(pow(2,3,4))
print(pow(2,3,5))

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

# 一个参数
for i in range(3): # 0 1 2
    print(i)
    
# 二个参数
for i in range(3, 8): # 3 4 5 6 7 
    print(i)

# 三个参数
# 正向操作
for i in range(1,9,5): # 1 6 留头舍尾
    print(i)
    
# 逆向操作
for i in range(9,1,-3): # 9 6 3 

bin    将10进制数据转化为二进制

print(bin(8))

oct    将10进制数据转化为八进制

print(oct(8))

hex    将10进制数据转化为16进制

print(hex(16))

chr    将ASCII编码转换为字符

print(chr(65))

ord    将字符转换为ASCII编码

print(ord("A"))

eval和exec在和第三方用户交互时候,谨慎使用

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

strvar = "print(123)"
strvar = "int(15)"
print(strvar)
res = eval(strvar)
print(res,type(res))

# strvar = "a=3" error eval的局限性 不能创建变量
# eval(strvar)

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

strvar = "a=3" 
exec(strvar)
print(a)


strvar = """
for i in range(10):
    print(i)
"""
exec(strvar)

repr   不转义字符输出字符串

strvar = "D:\nython32_gx\tay14"
res = repr(strvar)
print(res)

input  接受输入字符串

res = input("输入内容")
print(res , type(res))

hash 生成哈希值  文件校验

with open("ceshi1.py",mode="r",encoding="utf-8") as fp1, open("ceshi2.py",mode="r",encoding="utf-8") as fp2:
    res1 = hash(fp1.read())
    res2 = hash(fp2.read())
    if res1 == res2:
        print("文件校验成功")
    else:
        print("文件校验失败")

数学模块 import math

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

res = math.ceil(3.01)
res = math.ceil(-3.45)
print(res)

 

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

res = math.floor(3.99)
res = math.floor(-3.99)
print(res)

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

结果为浮点数,必须是两个参数

res = math.pow(2,3)
# res = math.pow(2,3,3) error
print(res)

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

res = math.sqrt(9)
print(res)

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

res = math.fabs(-1)
print(res)

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

res = math.modf(3.897)
print(res)

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

res = math.copysign(-12,-9.1)
print(res)

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

lst = [1,2,3,4]
res = math.fsum(lst)
print(res)

圆周率常数 pi ***

print(math.pi)

随机模块

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

res = random.random()
print(res)

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

# 一个参数
res = random.randrange(3)
print(res) # 0 1 2 

# 二个参数
res = random.randrange(3,6) # 3 4 5
print(res)

# 三个参数
res = random.randrange(1,9,4) # 1 5 
print(res)

res = random.randrange(7,3,-1) # 7 6 5 4
print(res)

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

res = random.randint(1,3) # 1 2 3
# res = random.randint(3,5,1)  error
print(res)

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

res = random.uniform(0,2) # 0<= x < 2
print(res)
res = random.uniform(2,0)
print(res)

"""
原码解析:
a = 2 , b = 0
return 2 + (0-2) * (0<=x<1)
x = 0 return 2 取到
x = 1 return 0 取不到
0 < x <= 2
return a + (b-a) * self.random()
"""

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

lst = ["孙凯喜","王永飞","于朝志","须臾间","含税小"]
res = random.choice(lst)
print(res)

def mychoice(lst):
    index_num = random.randrange(len(lst))
    return lst[index_num]
print(mychoice(lst))

# lambda 改造
mychoice = lambda lst : lst[   random.randrange(len(lst))     ]
print(mychoice(lst))

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

tup = ("孙凯喜","王永飞","于朝志","须臾间","含税小")
res = random.sample(tup,3)
print(res)

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

lst = ["孙凯喜","王永飞","于朝志","须臾间","含税小"]
random.shuffle(lst)
print(lst)

验证码效果

# 验证码里面有大写字母 65 ~ 90
# 小写字母 97 ~ 122
# 数字     0 ~ 9
def yanzhengma():
    strvar = ""
    for i in range(4):
        # 大写字母
        b_c = chr(random.randrange(65,91))
        # 小写字母
        s_c = chr(random.randrange(97,123))
        # 数字
        num = str(random.randrange(10))
        # 把可能出现的数据都放到列表中,让系统抽一个
        lst = [b_c,s_c,num]
        # 抽完之后累计拼接在字符串strvar当中
        strvar += random.choice(lst)
    # 循环四次拼接终止,返回随机码
    return strvar
    
res = yanzhengma()
print(res)