(五)python内置函数

在这里插入图片描述

  1. 强制转换 (7个)

    • dict()
    • set()
    • list()
    • int()
    • str()
    • bool()
    • tuple()
  2. 输入输出(2个)

    • input()
    • print()
  3. 数学相关()

    • abs() 绝对值
    • float()浮点型
    • min() 最小值
    • max() 最大值
    • sum() 加和
    • divmod() 两数相除,得商和余数
    • round() 保留几位小数(默认有四舍五入)
#max min
lst = [1,2,3,4,5,67]
a1 = max(lst)
a2 = min(lst)
print(a1,a2)

# sum
print(sum(lst))

# divmod
res = divmod(101 , 10)
print(res)  #商,余数

res3 = pow(2,3)   #幂次运算
print(res3)

res2 = round(1.1234,3)   #保留小数
print(res2)
  1. 进制转换

    • bin() 将十进制转换成二进制
    • oct() 将十进制转换成八进制
    • int() 将其他类型转换成十进制
    • hex() 将十进制转换成十六进制
num = 16
print(bin(num))    #0b10000
print(oct(num)) 	#0o20
print(hex(num))		#0x10

v1 = '0b10000'
print(int(v1 ,base=2)) 	 #16

v2 = '0o20'
print(int(v2 ,base=8))		#16

v3 = '0x10'
print(int(v3 ,base=16))		#16

  1. 其他

    • len()
    • open()
    • range()
    • id()
    • type()
  2. 编码相关

    • chr() 将十进制数字转换成Unicode编码中的对应字符串

    • ord() 将Unicode对应字符串转换成十进制数字

print(chr(97))
print(ord('a'))
  1. 高级内置函数(面试)
  • map() 循环每个元素(第二个参数),然后让每个元素执行函数(第一个参数),将每个函数执行的结果保存到新的列表中,并返回。

如果想对列表中,元组中,集合中的每一个元素统一做批量操作,可以使用map

v1 = [111,222,333]
# map的第一个参数:是一个函数
# map的第二个参数:必须是一个可迭代对象(可以被for循环的)
res = map(lambda x:x+10,v1)
print(res)   #py2 返回执行结果,py3返回一个对象
print(list(res))

在这里插入图片描述

  • reduce()
import functools
v1 = [1,2,3,4,5]

def func(x,y):  #在应用reduce的时候,他所应用的函数一定要包含两个参数
    return x+y
res = functools.reduce(func , v1)
print(res)


res2 = functools.reduce(lambda x,y:x+y , v1)
print(res2)

应用于可以将所有数据连接起来
1.刚开始传入两个参数
2.第二轮将第一个参数赋值为前一轮的return,第二个参数赋值为下一个新的参数

在这里插入图片描述

  • filter()

    可以过滤出某些特定的数据

在这里插入图片描述

#法1
v1 = [111,'zxc',222,'zorrn',333]
def func(x):
    if type(x) == int:
        return True
    return  False
res = filter(func,v1)
print(list(res))


#法2
res1 = filter(lambda x:True if type(x) == int else False,v1)
print(list(res1))


#法3
res2 = filter(lambda x:type(x) == int ,v1)
print(list(res2)

1. lambda函数(匿名函数)

lambda函数是一种匿名函数,这个函数存在的意义就在于,当你需要有一个功能非常简单的、且不会多次利用的函数时,它可以帮助你完成这个突如其来的功能需求。(有点类似于便签的作用)

1.1 lambda函数的三个特性
  • lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。

  • lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。

  • lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明

1.2 lambda函数的使用
lambda x, y: x* y

def w (x ,y):
	w = x + y
	return w
# 函数输入是x和y,输出是它们的积x*y ,两个函数表达的意义一致
lambda:None  #函数没有输入参数,输出是None
lambda *args: sum(args)  #输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)
lambda **kwargs: 1  #输入是任意键值对参数,输出是1

练习题1: (针对divmod())
要求:分页对数据进行展示
1 . 每页展示10条数据
2. 让用户输入要查看的页面:页码

# 自己练习答案
num = input("请输入要查看的页码")
num = int(num)
res1 , res2 = divmod(856,10)
print(res1,res2)
if res1 > int(num):
    for i in range(num*10,(num+1)*10):
        print("name : Zorrn{},email:10500{}".format(i, i))
elif res1+1 == int(num):
    for i in range(850,856):
        print("name : Zorrn{},email:10500{}".format(i, i))

else:
    print("输入有误")
# 标准答案
USER_LIST = []
for i in range(1,856):
    a = "name : Zorrn{},email:10500{}".format(i,i)
    USER_LIST.append(a)
    
per_page_num = 10
total_page = len (USER_LIST)
max_page_num ,a= divmod(total_page,per_page_num)
if a > 0:
    max_page_num = max_page_num+1
while True:
    num = input("请输入要查看的页码(Y(y)/N(n))退出")
    if num.upper() == 'N':
        break
    num = int(num)
    if num < 0 or num >max_page_num:
        print("输入有误,请重新输入")
    else:
        start_page = (num-1)*per_page_num
        end_page = num*per_page_num
        data = USER_LIST[start_page:end_page]
        for item in data:
        	print(item)

优点分析

  1. 参数命名合理,参数调节灵活
  2. if else的时候要注意,将简单较短的代码写在前边,冗长大代码写在后边

练习题2: (针对进制转化)
将ip中的每个十进制转换成二进制,并用过‘,’连接起来生成一串。

#自我练习
ip = '192.168.12.67'
lst =ip.split('.')
a1 = bin(int(lst[0]))
a2 = bin(int(lst[1]))
a3 = bin(int(lst[2]))
a4 = bin(int(lst[3]))
res = a1+","+a2+","+a3+","+a4
print(res)
# 标准答案
ip = '192.168.12.67'
lst =ip.split('.')
res = []
for item in lst:
    res.append(bin(int(item)))

print(','.join(res))

将ip中的每个十进制转换成二进制,并将其连接起来生成一串,将其转换成十进制打印输出


ip = '192.168.12.67'
lst =ip.split('.')
res = []
for item in lst:
    res.append(bin(int(item)))
new_res=[]
for item in res:
    new_res.append(item[2:])
result = ''.join(new_res)
print(result)
print(int(result,base=2))

练习题3: (针对ord chr)
随机6位验证码生成

import random
def get_random_code(code_num = 6):
    data = []
    for index in range(6):
        v = random.randint(65,90)  #得到一个随机数
        data.append(chr(v))
    res = "".join(data)
    return res

code = get_random_code()
print(code)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值