Python的内置函数、数学运算、类型转换、序列操作和set集合以及相应的练习

Day08新手小白学python

第八节  Python的内置函数、数学运算、类型转换、序列操作和set集合以及相应的练习


目录

Day08新手小白学python

前言

一、内置函数

二、数学运算

三、类型转换

四、序列操作

五、Set集合

六、练习

总结


前言

本文介绍了Python的内置函数、数学运算、类型转换、序列操作和set集合以及相应的练习


一、内置函数

内置函数:python自带的函数。

二、数学运算

# 取绝对值
print(abs(-10)) # 输出10
# 对浮点数进行取近似值,保留几位小数 round(x,n)返回的数据不是严格按照四舍五入计算的
print(round(2.6))  # 输出3
print(round(2.646738,3))  # 输出2.647
# pow求指数 pow(x,y) 返回x的y次方的值
print(pow(2,5))  # 输出32
# divmod()求商和余数 divmod(a,b) 返回包含商和余数的元组(a//b,a%b)
print(divmod(7,2)) # 输出(3, 1)
# max() 求最大值 min()求最小值 max(x,y,z,....) 接收的序列,包括元组、列表
print(max([100,180,80,30]))   # 输出180
# sum() 求和 sum(iterable,start) iterable可迭代对象如列表、元组、集合 start 指定相加的参数,序列求和完成后再加上start再求和
print(sum([0,1,2,3,4],3))      # 输出13
# 动态执行表达式 eval() 执行字符串表达式 eval(expression,globals,locals),globals变量作用域,应该是一个字典类型
a,b,c=1,2,3
print(eval('a+b+c'))    # 输出6
print(eval('p+f+h',{'p':3,'f':5,'h':9})) # 输出17
def TestFun():
    print('我执行了吗?')
    pass
eval('TestFun()')   # 输出 我执行了吗? 可以通过字符串调用函数执行

三、类型转换

# chr() 数字转字符 转化为它所对应的ASCII码
print(chr(65))  # 输出A
# 十进制转二进制 bin()
print(bin(10)) # 输出 0b1010
# 十进制转16进制 hex()
print(hex(19)) # 输出 0x13
# list() 元组转列表
tup=(1,2,3,4,5)
print(list(tup))    # 输出 [1, 2, 3, 4, 5]
li=list(tup)
# tuple() 列表转元组
print(tuple(li))    # 输出 (1, 2, 3, 4, 5)
# dict()创建字典
dic=dict()
dic=dict(name='小米',age=18) # 创建一个字典
# dic['name']='小米'
# dic['age']=18
print(dic) # 输出:{'name': '小米', 'age': 18}
# bytes()转为字节数组
print(bytes('我喜欢python',encoding='utf-8')) # utf-8国际编码

四、序列操作

# all() 判断给定的可迭代参数中的所有元素是否都为True,若都为True则返回True 除了0、空、False都算True
# 空元组、空列表返回值为True
li=[1,2,3,0]
print(all(li))  # 输出False
tup=(1,2,3)
print(all(tup)) # 输出True
# any() 判断给定的可迭代参数中的所有元素是否都为Flase,若都为False则返回False 若有一个为True则返回True 除了0、空、False都算True
print(any(li))  # 输出True
print(any(('',False,0)))    # 输出False
# sorted() 对所有可迭代对象排序,返回的是一个新的list
# sort()只对list对象进行排序,返回的是对已经存在的列表进行操作
# sorted(iterable,key,reverse) reverse--排序规则,reverse=False是升序,reverse=True是降序,默认是升序
li = [2, 1, 5, 67, 23, 10]
li.sort() # list的排序方法 直接修改的是原始对象
print(li)   # 输出[1, 2, 5, 10, 23, 67]
tupArray = (2, 1, 5, 67, 23, 10)
varList=sorted(li)    # 默认升序
varList1=sorted(li,reverse=True)    # 降序
print(li)   #输出 [2, 1, 5, 67, 23, 10]
print(varList)   #输出[1, 2, 5, 10, 23, 67]
print(varList1)   #输出[67, 23, 10, 5, 2, 1]
varRs = sorted(tupArray, reverse=False)
print(varRs)    # 输出[1, 2, 5, 10, 23, 67]

# reverse()函数用于反向列表中元素
a = [1, 2, 3, 4, 5]
a.reverse()
print(a)  # 输出[5, 4, 3, 2, 1]

# range 创建一个整数列表 用在for循环中 range(start,stop,step)
for item in range(0, 10, 2):
    print(item, end=' ')  # 输出0 2 4 6 8
    pass


# zip() 会把序列中对应的索引位置的元组存储为一个元组,再返回由这些元组组成的列表
s1=['a','d','r','e']
s2=['你','我','他']
s3=['你','我','他','猫','狗']
print(list(zip(s1)))    # 压缩一个数据,输出[('a',), ('d',), ('r',)]
zipList=zip(s1,s2)      # 压缩两个参数
print(list(zipList))    # 输出:[('a', '你'), ('d', '我'), ('r', '他')]
zipList1=zip(s1,s3)
print(list(zipList1))   # 输出:[('a', '你'), ('d', '我'), ('r', '他'), ('e', '猫')],按最短的那个算
def printBookInfo():
    '''
    zip函数的使用
    :return:
    '''
    books = []  # 存储所有的图书信息
    id = input('请输入编号:每个项以空格分隔')  # str
    bookName = input('请输入书名:每个项以空格分隔')  # str
    bookPos = input('请输入位置:每个项以空格分隔')
    idList = id.split(' ')
    nameList = bookName.split(" ")
    posList = bookPos.split(' ')
    bookInfo = zip(idList, nameList, posList)  # 打包处理
    for bookItem in bookInfo:
        '''
        遍历图书信息进行存储
        '''
        dicInfo = {'编号': bookItem[0], '书名': bookItem[1], '位置': bookItem[2]}
        books.append(dicInfo)  # 将字典对象添加到list容器中
        pass
    for item in books:
        print(item)
printBookInfo()
# 输出结果为:
# {'编号': '1', '书名': 'python', '位置': 'A1'}
# {'编号': '2', '书名': 'java', '位置': 'B1'}
# {'编号': '3', '书名': 'c++', '位置': 'C1'}

# enumerate() 将一个可遍历的数据对象组合成一个索引序列,同时列出数据和数据下标 enumerate(序列,起始位置)起始位置默认从0开始
li=['a','b','c']
for item in enumerate(li):
    print(item)         # 输出:(0, 'a') (1, 'b') (2, 'c')
for index,item in enumerate(li):
    print(index,item,end=' ')         # 输出:0 a 1 b 2 c
for index,item in enumerate(li,5):
    print(index,item,end=' ')         # 输出:5 a 6 b 7 c
dicObj={}
dicObj['name']='小明'
dicObj['hobby']='打球'
dicObj['pro']='测控'
print(dicObj)
for item in enumerate(dicObj.values()):
    print(item,end=" ")     # item是元组类型 输出:(0, '小明') (1, '打球') (2, '测控')
    print(item[1],end=" ")  # 索引元组的第二项 输出:小明 打球 测控 



五、Set集合

set(集合)也是python中的数据类型,是一个无序且不重复的元素集合,不支持索引和切片。类似于字典,但只有key,没有value

# 创建集合
set1={1,2,3}    # 集合类型
set2={2,3,4}
dic1={1:3}      # 字典类型

# 添加操作
set1.add('python')
print(set1) # 输出:{1, 2, 3, 'python'}

# 清空操作
set1.clear()
print(set1)   # 输出:set()

# difference() 两个集合的差集,输出a中有b中没有d的数据
rs=set1.difference(set2)
print(set1-set2)        # 输出:{1}
print(rs)               # 输出:{1}

# intersection() 两个集合的交集,输出a中有b中也有d的数据
rs=set1.intersection(set2)
print(set1&set2)        # 输出:{2, 3}
print(rs)               # 输出:{2, 3}

# union() 两个集合的并集,输出a和b的所有数据
rs=set1.union(set2)
print(set1 | set2)        # 输出:{1, 2, 3, 4}
print(rs)               # 输出:{1, 2, 3, 4}

# pop() 随机移除某个元素并获取该元素
print(set1.pop())   # 输出:1
print(set1)     # 输出:{2, 3}

# discard() 移除指定的数据
set1.discard(3)  # 指定移除的元素
print(set1)     # 输出:{1, 2}

# updata() 更新集合
set1.update(set2)
print(set1)      # 输出:{1, 2, 3, 4}

六、练习

1、求三组连续自然数的和:求出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))

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

def suanshi():
    for i in range(1,101):
        x=i     # 大和尚
        y=100-i     # 小和尚
        if x*3+y/3==100:
            return x,y
        pass
    pass
rsObj=suanshi()
print('大和尚{}人,小和尚{}人'.format(rsObj[0],rsObj[1]))

3、指定一个列表,列表中含有唯一一个只出现过一次的数字,写程序找出这个独一无二的数字

li=[1,2,3,4,5,3,4,5,7,8,8,9,8,6,4,3]
set1=set(li)
# print(set1) # 输出 {1, 2, 3, 4, 5, 6, 7, 8, 9} set是无序且不重复的
for i in set1:
    li.remove(i)
    pass
set2=set(li)    # set2中为原来li中有重复的数字集合
for i in set1:  # set1中数据全部去重后形成的集合
    if i not in set2:
        print(i,end=' ')    #输出:1 2 6 7 9
        pass
    pass
pass


总结

本文介绍了Python的内置函数、数学运算、类型转换、序列操作和set集合以及相应的练习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值