python第六天

Python内置函数

任何一门编程语言的核心操作都是操作内存中的数据,但内存中的数据又是通过编程语言的API来实现,所谓的API,就是系统提供给我们的函数,有一种函数是系统预先定义的函数,也就是我们安装python就自带的函数,这种我们把它称为内置函数,也叫内嵌函数

1、内置函数介绍

python官网给出了68个内置函数,以及相应的使用介绍。

 

 

 

2、数学运算的函数

abs():求绝对值

round() 对浮点数进行近似取值,保留几位小数

注意:这里不完全是按照四舍五入或者四舍六入五成双来进行取值的,取值和python的版本有关,还和浮点数的精度有关。

 

 

 

pow() 返回 𝑥^𝑦(x的y次方) 的值

print(pow(2,3))  # 2**3,2的3次方
print(2**3)
print(pow(2,3,2))  # (2**3)%2 取余
print(pow(2,3,3))
print(pow(2,3,5))

divmod()求商和余数(商和余数的集合)

divmod(a,b)==>元组(a//b,a%b)

max() min() 最大值和最小值(参数可以是序列)

sum() 求和

 

 

 

eval()用来执行一个字符串表达式,并返回表达式的值(动态)

a,b,c=1,2,3
print(eval('a*b+c-a'))
print(eval('a*b+c-a',{'a':10,'b':2,'c':3}))  # 变量更改时候必须是字典对象,且不变的变量也得写进去
def testfun():
    print('我执行了吗?')
    pass
eval('testfun()')  # 调用函数的字符串格式并执行函数

 

 

 

3、类型转换函数

 

 

 

 

 

 

 

 

 

 

chr()数字转字符

描述: chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符
语法: chr(i)
参数: i – 可以是10进制也可以是16进制的形式的数字
返回值:返回值是当前整数对应的Ascii字符

 

 

 

 

 

 

bool()转换为布尔类型

 

描述: bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False
语法: class bool([x])
参数: x – 要进行转换的参数
**返回值:**返回 Ture 或 False

下列对象都相当于False:[],(),{},0, None, 0.0, ''

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

any()

 any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。元素除了是 0、空、FALSE 外都算 TRUE

 

 

 

sort函数定义:sort(cmp=None, key=None, reverse=False)
cmp:用于比较的函数(大于时返回1,小于时返回-1,等于时返回0),比较什么由key决定,有默认值,迭代集合中的一项;
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True 或者 reverse = False,有默认值。

key负责指定排序的比较顺序,reverse=True表示按照升序,False表示按照降序

 

 

 

 

 

 

 

zip()压缩函数,按照索引相对应的元素打包成元组,可以列表的形式查看

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表

z=zip([1,2,3],['a','b','c'])
print(z)
print(list(z))
z=zip([1,2,3],['a','b','c','d'],[2,'huber'])
print(z)
print(list(z))
s1=[1,2,'hubert']
print(s1)
print(zip(s1))
print(list(zip(s1)))

 

 

练习

 

def printBookInfo():
    books=[]  # 存储所有图书的信息
    id=input('请输入编号:每个项以空格分隔' )  #str
    bookName=input('请输入书名:每个项以空格分隔')  # str
    bookpos = input('请输入位置:每个项以空格分隔')  # str
    idList=id.split(' ')
    nameList=bookName.split(' ')
    posList=bookpos.split(' ')
    # print(idList)  # ['1', '2', '3']把输入的变成列表输出

    bookInfo=zip(idList,nameList,posList)  # 打包处理
    # print(list(bookInfo))   #[('1', 'ww', 'ff'), ('2', 'ee', 'ggh'), ('3', 'rr', 'hh')]
    for bookItem in bookInfo:
        '''
        遍历图书信息进行存储
        '''
        dictInfo={'编号':bookItem[0],'书名':bookItem[1],'位置':bookItem[2]}
        books.append(dictInfo)  # 将字典对象添加到list容器中
        pass
    # print(books)  # [{'编号': '1', '书名': 'hh', '位置': 'c1'}, {'编号': '2', '书名': 'ss', '位置': 'c2'}, {'编号': '4', '书名': 'ee', '位置': 'c3'}]
    for i in books:
        print(i)
printBookInfo()

 

 

 

enumerate()枚举法

 函数用于将一个可遍历的数据对象(如列表、元组或字符串,集合)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

listobj=['q','c','b']
for i in enumerate(listobj):
    print(i)
    pass
for index,i in enumerate(listobj):
    print(index)
    print(i)
    print(index,i)
    pass
for index,i in  enumerate(listobj,5):
    print(index,i)

 

 

5、set集合

set(集合) 也是python中的一种数据类型,是一个无序且不重复的元素集合。类似于字典,但是只有Key没有value。

 

 

集合的运算

 

# 创建集合
set1={1,2,'a'}
print(set1)
print(type(set1))
set1.add('python')   # 添加操作
print(set1)
set1.clear()  #清空操作(也适用于其他字符串,元组,列表,字典)
print(set1)
# 两个集合的差集,a中存在,b中不存在
a={32,12,34,'cc','vv'}
b={12,43,23,'vv'}
print(a.difference(b))
print(a-b)
# intersection()两个集合的交集,a中存在,b中也存在的
print(a.intersection(b))
print(a&b)
# union 并集 包含a中的元素,也包含b中的元素
print(a.union(b))
print(a|b)
# pop 集合pop随机移除某个元素并且获取那个参数(元素),集合pop没有参数
print(a)
print(a.pop())
print(a)
# discard 移除指定元素
a.discard('cc')
print(a)
# update 更新集合,在原来的基础上更新
print(b)
a.update(b)
print(a)

 

 

每日练习

求三组连续自然数的和:求出1到10、20到30和35到45的三个和

def sumRange(m,n):
    '''
    求从m到n的连续自然数的总和
    :param m:int
    :param n:int
    :return:
    '''
    return sum(range(m,n+1))
print(sumRange(1,10))
print(sumRange(20,30))
print(sumRange(35,45))

100个和尚吃100个馒头,大和尚一人吃3个馒头,小和尚三人吃1个馒头。请问大小和尚各多少人?

def personCount():
    '''
    计算各有多少个和尚
    大和尚a 小和尚100-a
    :return:
    '''
    for a in range(1,35):
        if a*3+(100-a)*(1/3)==100:
            return (a,100-a)
        pass
    pass
rsobj=personCount()
print('大和尚{}人,小和尚{}人'.format(rsobj[0],rsobj[1]))

指定一个列表,列表里含有唯一一个只出现过一次的数字。写程序找出这个“独一无二”的数字

#做法一:傻瓜式
lt=input('请输入一组数字列表,用空格隔开')
listnum=lt.split(' ')
flag=0
listnum1=sorted(listnum)
s=listnum1[0]
for item in listnum1:
    if item==s:
        flag+=1
        continue
        pass
    else:
        if flag==1:
            print(s)
            break
            pass
        s=item
        flag=1
        pass
    pass
else:
    print(listnum1[len(listnum1)-1])

#做法二:set
lt=input('请输入一组数字列表,用空格隔开')
listnum=lt.split(' ')
set1=set(listnum)
for i in set1:
    listnum.remove(i)
    pass
set2=set(listnum)
print(set1-set2)

#做法三:位运算异或,相同值异或为0,但是只适用于重复次数为偶数次
lt=input('请输入一组数字列表,用空格隔开')
listnum=lt.split(' ')
ans=0
for i in listnum:
    ans^=int(i)
    pass
print(ans)

 


 

posted @ 2021-03-05 21:27  划水就完事了  阅读(197)  评论(2编辑  收藏  举报