-
强制转换 (7个)
- dict()
- set()
- list()
- int()
- str()
- bool()
- tuple()
-
输入输出(2个)
- input()
- print()
-
数学相关()
- 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)
-
进制转换
- 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
-
其他
- len()
- open()
- range()
- id()
- type()
-
编码相关
-
chr() 将十进制数字转换成Unicode编码中的对应字符串
-
ord() 将Unicode对应字符串转换成十进制数字
-
print(chr(97))
print(ord('a'))
- 高级内置函数(面试)
- 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)
优点分析
- 参数命名合理,参数调节灵活
- 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)