-
数学类函数
-
abs()求绝对值
n = -12 print(abs(n))
-
sum() 求和 字符串类型的元素不行
list1 = [11,22,33,44,55] res1 = sum(list1) print(res1)
- divmod() 传入两个数值,前一个除以后一个,得到两个值:一个商,一个是余数
s, y = divmod(16, 5) print(s) print(y)
- round() 四舍五入
n = 12.765 print(round(n,2)) # 12.77
-
pow 求幂次方
print(pow(2,3))
-
-
聚合类函数
- max() 求最大值
list1 = [123,53,225,1123,52,5,3,14] res1 = max(list1) print(res1)
-
mix()最小值
list1 = [123,53,225,1123,52,5,3,14] res1 = min(list1) print(res1)
-
all 判断一个列表中是否出现一个False
# 只要存在一个元素转bool类型结果是False,all()的结果就是False list1 = [12,45,124,'','hello',12.34] print(all(list1))
- any 判断一个列表中是否出现一个True
# 只要存在一个元素转bool类型结果是True,all()的结果就是True list1 = [12,45,124,'','hello',12.34] print(any(list1))
-
和进制相关的函数
- 二进制
- bin() 将十进制的值转二进制
print(bin(136)) # 0b10001000
-
int() 将某一种进制转10进制
print(int('0b10001000',2))
-
八进制
oct() 将十进制转八进制
print(oct(136)) # 0o210
-
十进制
整数默认都是十进制
-
十六进制
hex() 将十进制转16进制
print(hex())
-
字符类函数
-
ord() 将一个字符转成ASCII码数值
'0' - 48
'A' - 65
'a' - 97
print(ord('0'))
print(ord('A'))
print(ord('a'))
-
chr() 将数值转成对应的ASCII码字符
print(chr(97))
-
类型转换相关函数
-
int()
-
str()
-
bool()
-
list()
-
dict()
-
tuple()
-
set()
-
bytes()
# s1 = '中国' # b1 = s1.encode('UTF-8') # print(b1, type(b1)) b2 = bytes('中国','UTF-8') print(b2)
-
-
获取输出类函数
-
input()
-
print()
-
len()
-
open()
-
获取索引和元素
list1 = [1,2,3,4] for i,j in enumerate(list1): print(i,j)
-
id() 获取对象的地址值
-
callable() 判断一个变量是否是一个函数
list1 = [1,2,3,4] def fun1():pass print(callable(fun1))
-
sorted() 排序
list1 = [34,12,5,12,344,53] print(f"list1:{list1}") list2 = sorted(list1) print(f"list1:{list2}") # list1:[5, 12, 12, 34, 53, 344]
-
自定义排序
list1 = ['小虎:1007', '黄沪生:1009', '查镕贤:1001', '黄涛:1004', '方直:1002'] def fun1(e): return int(e.split(':')[1]) list2 = sorted(list1, key=fun1) print(f"list1:{list2}")
-
zip() 将两个序列中的元素一一对应
list1 = [1001, 1002, 1003, 1004, 1005] list2 = ['小虎', '黄沪生', '查镕贤', '黄涛', '方直'] for i,j in zip(list1,list2): print(f"学号:{i}, 姓名:{j}")
-
函数生成式
python中提供了一个关键字可以让我们在函数中使用 yield
def fun1():yield 1yield 2yield 3yield 4yield 5
res1 = fun1()
print("hello world")
print(res1.__next__())
# 若干行代码后
print(res1.__next__())
有yield关键字的函数,结果是可以使用for循环的
# def fun1():
# print("hello 1")
# yield 1
# print("hello 2")
# yield 2
# print("hello 3")
# yield 3
# print("hello 4")
# yield 4
# print("hello 5")
# yield 5
# res1 = fun1()
# for i in res1:
# print(i)
# print("-----------")
def fun1():for i in range(1,11):yield i
res1 = fun1()
for i2 in res1:print(i2)print("-----------")
模块
简单理解为就是一个.py后缀的一个文件
- 内置模块
- 第三方模块
- 自定义模块
模块导入的方式
- import 直接将一个模块导入进来
import day06.utils.login_tools as t # 导入login_tools模块并起了一个别名叫做t
-
from xxx import xxx 从一个模块中,导入具体的工具
from lxml import etree
from day06.utils.login_tools import rand_yzm # 从模块login_tools中导入某一个函数 from day06.utils.login_tools import rand_yzm,send_email # 一次从模块中导入多个 from day06.utils.login_tools import * # 导入模块中所有的内容 from day06.utils.login_tools import rand_yzm as t1 # 导入模块中的函数并重新命名
- 注意: 切记,自己定义的模块名不要和内置或第三方的模块名重名!!!!!
内置函数random模块学习
-
理论上,python模块中,任意一个地方都可以进行导入
-
但是规范上,我们开发潜规则上,将导入的部分放在python模块文件最开始的位置编写
-
randint() 随机生成一个范围内的整数
n = random.randint(1000,2000) print(n)
-
uniform() 随机生成一个范围内的小数
n = round(random.uniform(0, 1),2)#用round四舍五入
print(n)
- choice() 随机抽取列表中的一个元素
list1=['上','伤']
res1 = random.choice(list1)
print(res1)
print(list1
-
sample() 随机抽取列表中若干个元素
list1 = ['张三','李四','王五','赵六','王麻子','小李子'] # res1 = random.choice(list1) # print(res1) # print(list1) n = random.sample(list1,2) print(n, type(n))
练习:使用random模块以及之前学习的知识,编写一个抽奖程序。
list1 = ['小虎', '张成阳', '黄涛', '方直', '杨浩东', '黄沪生', '查镕贤'] jiang_xiang = [ ('一等奖', 1, 'mate70 pro'), ('二等奖', 1, '小米手环'), ('三等奖', 2, '按摩仪'), ('四等奖', 2, '京东购物卡') ] def chou_jiang(l1):for i, num, goods in jiang_xiang:print(f"正在抽取{i}".center(50, '-'))name_list = random.sample(l1,num)# 将中奖名单从原名单中删除for n in name_list:if n in l1:list1.remove(n)info = f"恭喜{','.join(name_list)} 中得{goods}!!!!"yield info res1 = chou_jiang(list1) input("开始抽一等奖....按下回车开始!") print(res1.__next__()) input("开始抽二等奖....按下回车开始!") print(res1.__next__()) input("开始抽三等奖....按下回车开始!") print(res1.__next__()) input("开始抽四等奖....按下回车开始!") print(res1.__next__())