1.常用算数内置函数
#abs()---取绝对值
a = abs(-32)#32
print(a)
#round --- 取近似值(四舍五入),也可以在第二个参数设定保留几位小数
b = 3.66;
c = round(b);#4
d = round(b,1);#3.7
print(c,d)
#pow -- 求一个函数的幂次方
a = pow(2,3)#求2的3次方--8 == 3**3
print(a)
#max--求给定序列的最大值
a=max([23,123,22,5,6,3]);#123 序列,元组都可以
print(a)
#sum -- 求和,可以求和序列和元组,也可以迭代使用
print(sum(range(50),3));#迭代使用
#eval--动态执行的函数,执行字符串表达式,并返回表达式的值
a,b,c = 1,2,3
d=eval('a*b+c-30')#-25
print(d)
def TestFun():
print('甚至可以执行函数')
pass
eval('TestFun()')
2.类型转换内置函数
#bin()--转换二进制
a = 10;
print(bin(a))#将a转换成2进制
#hex()--转换成16进制
print(hex(31))
#chr()--将数字转换为字符--ASCII码标准
a = 65
print(chr(a))
#list()--将元组转换为列表//tuple()--将序列转换为元组
tup = (1,2,3,4)
print(type(tup))
li = list(tup)
print(type(li))
#dict()--用于创建字典
dic = dict(name = '小明')
print(type(dic))
print(dic)
#bytes()--转换为字节数组,第一个参数为数据,第二个参数为转换标准
print(bytes('转换为字节数组',encoding='utf-8'))
3.序列操作函数
#序列操作函数
#all()用于判断一个元组/列表中的所有元素是否都为true,
# 如果是则返回true(除了是0,空,false外都算true)-- &&
li = [1,2,3]
print(all(li))#true
li = [1,2,3,0]
print(all(li))#false
#用于判断给定元组/列表内数据是否全部为false,是则返回false,否则返回true--||
li = [0,'',False]
print(any(li))#false
li = [0,'',False,1]
print(any(li))#true
#sorted()/sort() -- 排序函数
#sort--只应用在list中,sorted--可以对所有可迭代对象进行排序操作
#sort--对原有列表进行操作,sorted--生成一个新的list并返回数据
#默认是升序 reverse -- false(升序) -- true(降序)
li = [5,1,3,8,22]
print(li.sort())#修改并打印原始对象,因此不能排序元组,因为元组一旦定义不可修改
print(sorted(li,reverse=True))
print(sorted(li))#默认为false
VarList = sorted(li)#可以用一个新对象接受,原数组是不变化的
#reverse()--反转列表中的元素
li = [5,1,3,8,22]
li.reverse()
print(li)
#range(start,stop,step)生成一个整数列表
#zip()--将对象中元素打包成一个个元组,且一一对应,个数与最短序列一样
s1=['1','2','3']
s2=['你','我','他','他们']
s3=['a','b','c','d','e']
z3=zip(s1,s2)#('1', '你'), ('2', '我'), ('3', '他')
z4 = zip(s1,s2,s3)#('1', '你', 'a'), ('2', '我', 'b'), ('3', '他', 'c')
print(list(z3))#压缩后要转换成列表才可以展示,否则输出的是地址
print(list(z4))
#zip应用--图书信息存储
def printBookInfo():
books = [] #定义一个存储所有图书信息的数组
id = input('请输入编号: 每个编号以空格分隔')
bookName = input('请输入书名: 每个书名以空格分隔')
bookPos = input('请输入位置: 每个位置以空格分隔')
idList = id.split(' ')#将id字符串以空格分隔为一个个元素并存到列表中
bookNameList = bookName.split(' ')
bookPosList = bookPos.split(' ')
bookInfo = zip(idList,bookNameList,bookPosList)#将三个列表对应压缩
for bookItem in bookInfo:
'''
遍历图书信息并进行储存
'''
dicInfo={'编号':bookItem[0],'书名':bookItem[1],'位置':bookItem[2]}
#用字典将数据一一对应存储
books.append(dicInfo)
pass
for item in books:
print(item)#打印
pass
pass
#printBookInfo()
#enumerate()--将以个可遍历数据对象组合为一个索引序列,并列出下标
li = ['a','b','c','d']
#要用循环提取数据,分别提取索引和数据
for index,item in enumerate(li,1):#第二个参数指定索引从1开始
print(index,item)
4.set集合
Set集合是一种数据类型,是一个无序且不重复的元素集合
集合不支持索引和切片
类似于字典,但是只有键值
创建方式
1. set1 = {"1","2"}
2. list1 = ['1','2','3','4']
set2 = set(lisit1)
#没有键值对定义的字典
set = {1,2,3}
set2 ={2,3,4}
set1 = {1,2,3}
print(type(set))#<class 'set'>
#添加操作
set.add('python')
print(set)#{1, 2, 3, 'python'}
#清空操作
set.clear()
print(set)#set()
set2 ={2,3,4}
set1 = {1,2,3}
#取差值
set3 = set1.difference(set2)#就是拿set1中有,但是set2中没有的数据
#相当于print(set1-set2)
print(set3)#{1}
#交集操作
set4 = set1.intersection(set2)
#相当于 set4 = set1&set2
print(set4)#{2, 3}
#并集操作
set5 = set1.union(set2)
#相当于 set5 = set1|set2
print(set5)#{1, 2, 3, 4}
#pop 拿数据并移出该数据
print(set1)#{1, 2, 3}
a = set1.pop()
print(a)#1
print(set1)#{2, 3}
#discard 移除数据
set2.discard(4)
print(set2)#{2, 3}
#update更新集合--就是将两个集合合并并返回到第一个集合处
set.update(set1)
print(set)#{2, 3}
5.作业
#求三组连续自然数的和
a=sum(range(1,10+1))#最后一个数是不算的,左闭右开,所以要加1
b=sum(range(20,30+1))
c=sum(range(35,45+1))
def sumRange(m,n):#定义函数做
return sum(range(m,n+1))
pass
print(sumRange(1,10))
print(sumRange(20,30))
print(sumRange(35,45))
print(a,b,c)
#100个和尚吃100个馒头,大和尚一人3个馒头,小和尚3人一个馒头,问各多少人
def PersonCount():
for a in range(1,100):#将大和尚人数从1算到100
if a*3 + (100-a)*(1/3)==100:
return (a,100-a)#成立则返回
pass
pass
rsObj = PersonCount()
print('大和尚{}人,小和尚{}人'.format(rsObj[0],rsObj[1]))
#提取列表中唯一出现过的数字
li = [1,3,4,3,3,5,7,2,4,2,5,2,1]
set1=set(li)
#遍历set1中的元素,去掉多于一个的数据值
#for i 拿的是对应的数据值而不是下标
for i in set1:
li.remove(i)
pass
set2 = set(li)#li中有重复数字的集合
#再遍历一次set1找到没有重复的值
for i in set1:
if i not in set2:
print(i)
pass
pass
pass