成长的标准就是,拒绝别人以后,没有任何的愧疚感。——萨特
作者主页: 追光者♂
个人简介:
[1] 计算机专业硕士研究生
[2] 2022年度博客之星人工智能领域TOP4
[3] 阿里云社区特邀专家博主
[4] CSDN-人工智能领域优质创作者
[5] 预期2023年10月份 · 准CSDN博客专家
- 无限进步,一起追光!!!
感谢大家 点赞 收藏⭐ 留言!!!
附:
1.【Neo4j × Python】基于知识图谱的电影问答系统(含问题记录与解决)附:源代码(含Bug解决)
2.【Neo4j × 知识图谱】图形化数据库基本操作: 创建节点与关系、添加属性、查询节点 | 附:可视化 构建四大名著 知识图谱(含源代码)| word2vec实战: 构造斗罗大陆人物关系
3.Python内置函数系统学习(1)——数据转换与计算 (详细语法参考+参数说明+应用场景示例) 对象—>>字符串、字符—>>ASACII码 综合应用
4.Python内置函数系统学习(2)——数据转换与计算 (详细语法参考+参数说明+应用场景示例), max()在列表、元组、字典中的综合应用 | 编程实现当前内存使用情况的监控
5.Python内置函数系统学习(3)——数据转换与计算 (详细语法参考+参数说明+具体示例) 详解min()函数在列表、元组、字典的综合应用 | lambda 很牛哦!你怎么看!?
本期,我们继续学习Python中的内置函数——关于“数据转换与计算”的内容,针对“四舍五入”、“幂运算”、“求和”等进行综合应用的演练。这也是人工智能与机器学习的基础建议需要掌握的实例代码,均附以实战练习来讲解,建议大家请跟随博主的脚步,逐层次进行练习哦!最后,再次与【文心一言】进行对话,注意到这是此前的测试,不代表最新结果哦
!祝大家学习顺利!
语法参考:
round()
函数用于返回数值的四舍五入值,其语法格式如下:
round(number[, ndigits])
参数说明:
其它说明:
只提供number参数
),四舍五入取整,返回的是整数
;参数ndigits设置为0
,则保留0位小数进行四舍五入,返回的值是浮点型
;ndigits大于0
,则四舍五入到指定的小数位
;参数ndigits小于0
,则对浮点数的整数部分进行四舍五入
,参数ndigits用来控制对整数部分的后几位进行四舍五入
,小数部分全部清0
,返回类型是浮点数
。如果传入的整数部分位数小于参数number的绝对值,则返回0.0
;返回值:返回四舍五入值。
使用round()函数四舍五入的规则如下:
如果保留位数的后一位是5,且该位数后有数字,则进上去
。例如,8.2152保留两位小数为8.22;又如8.2252保留两位小数为8.23。如果保留位数的后一位是5,且该位数后没有数字
。要根据保留位数的那一位来决定是进上去还是舍去:如果是奇数则进上去
,如果是偶数则舍去
。例如,1.35保留一位小数为1.4;又如1.25保留一位小数为1.2。使用round()函数对小数点右侧进行四舍五入求值,常见用法如下:
# 昵 称:XieXu & CSDN@追光者♂
# 时 间: 2023/4/7/0007 10:23
# 小数点右侧四舍五入求值
print(round(3.1415926)) # 不提供参数ndigits,四舍五入取整,返回的是整数
print(round(3.1415926, 0)) # 参数ndigits为0,保留0位小数进行四舍五入,返回的是浮点型
print(round(3.1415926, 3)) # 保留小数点后3位
print(round(-0.1233, 2)) # 保留小数点后2位
print(round(20 / 6, 2)) # 保留计算结果小数点后2位
print(round(10.15, 1)) # 保留小数点后1位
print(round(10.85, 1)) # 保留小数点后1位
注意点:
在使用round()函数对浮点数进行操作时,有时结果不像预期那样,比如round(2.675,2)的结果是2.67而不是预期的2.68,这不是bug,而是浮点数在存储的时候因为位数有限,实际存储的值和显示的值有一定误差。除非对浮点数精确度没什么要求,否则尽量避开用round()函数进行四舍五入求值。
当round()函数的参数
ndigits小于0时
,则对浮点数的整数部分进行四舍五入,参数ndigits用来控制对整数部分的后几位进行四舍五入
,小数部分全部清0,返回类型是浮点数。如果传入的整数部分位数小于参数number的绝对值,则返回0.0;常见用法如下:
# 小数点左侧四舍五入求值
print(round(23645.521, -1)) # 对整数部分的后几位进行四舍五入
print(round(23645.521, -2)) # 对整数部分倒数第二位以后的部分进行四舍五入
print(round(23645.521, -3)) # 对整数部分倒数第三位以后的部分进行四舍五入
print(round(23645.521, -6)) # 整数部分位数小于参数n的绝对值,返回0.0
round()函数不仅可以对
浮点数
进行操作,还可以对整数进行操作,返回值为整型。代码如下:
print(round(23665)) # 对整数进行操作
print(round(23665, -2)) # 对整数倒数第二位进行操作
print(round(23665, -4)) # 对整数倒数第四为进行操作
语法参考:
pow()
函数用于返回两个数值的幂运算值,如果提供可选参数z的值,则返回幂乘结果之后再对z取模
。其语法格式如下:
pow(x, y[, z])
参数说明:
返回值:结果返回x的y次方(相当于x**y),如果提供z的值,则返回结果之后再对z求余
(相当于pow(x,y)%z)。
补充说明:
如果参数x和y有一个是浮点数,则结果将转换
成浮点数。
如果参数x和y都是整数,则结果也是整数
,除非参数y是负数;如果参数y是负数,则结果返回的是浮点数
。浮点数不能取模,此时可选参数z不能传入值。
通过
pow()
函数获取两个数值的幂运算值,示例代码如下:
# 昵 称:XieXu & CSDN@追光者♂
# 时 间: 2023/4/9/0009 9:02
# 参数x和y都是整数,则结果也是整数,除非y是负数,如果y是负数,则结果返回的是浮点数
print(pow(3, 2)) # 相当于print(3**2)
print(pow(-2, 7)) # x参数为负数
print(pow(2, -2)) # y参数为负数
# 参数x和y有一个是浮点数,则结果将转换成浮点数
print(pow(2, 0.7))
print(pow(3.2, 3))
通过
pow()
函数获取幂运算值与指定整数的模值,示例代码如下:
# 获取幂运算值与指定整数的模值
# 指定参数z的值,参数x和y必须为整数,且参数y不能为负数
print(pow(2, 3, 3)) # 相当于print(pow(2,3)%3)
结果为 2
注意: 如果pow()函数中设置了可选参数z的值,则参数x和y必须为整数,且参数y不能为负数。否则将抛出异常,代码如下:
# 【有可能会提示..】将提示ValueError: pow() 2nd argument cannot be negative when 3rd argument specified
print(pow(3, -2, 4)) # 1 此处应该是由于版本的原因,这里输出为1
# 将提示TypeError: pow() 3rd argument not allowed unless all arguments are integers
print(pow(3.2, 3, 2))
TypeError: pow() 3rd argument not allowed unless all arguments are integers,意为:TypeError: pow()第三个参数不允许,除非所有参数都是整数
此外,还需注意:pow()函数的所有参数必须是数值类型,否则将提示TypeError,代码如下:
# 将提示TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
print(pow('3', 2))
TypeError: unsupported operand type(s) for ** or pow(): ‘str’ and ‘int’,意为:
在Python中,我们可以使用**
运算符来执行幂运算,即计算一个数的某个幂次方。
下面是一些简单的示例:
# 2的3次方
result = 2 ** 3
print(result) # 输出:8
# 4的平方根
result = 4 ** 0.5
print(result) # 输出:2.0
# 负数的幂次方
result = (-3) ** 2
print(result) # 输出:9
在第一个示例中,我们计算2的3次方,结果为8
。在第二个示例中,我们计算4的平方根,结果为2.0
。注意,使用**
运算符计算的结果始终为浮点数类型。
在第三个示例中,我们计算负数的平方,即(-3) ** 2
,结果为正数9
。在这种情况下,**
运算符首先对括号内的表达式取幂,然后再应用负号。
此外,可以使用内置的pow()
函数来执行幂运算。pow()
函数接受两个参数,第一个参数为底数,第二个参数为指数。与**
运算符相似,pow()
函数也可以执行幂运算。下面是一个示例:
result = pow(2, 3)
print(result) # 输出:8
这些方法都可以在Python中进行幂运算。我们可以根据自己的需求选择最适合的方法。
语法参考:
sum()函数用于对列表、元组或集合等可迭代对象进行求和计算。其语法格式如下:
sum(iterable[, start])
参数说明:
返回值:求和结果。
注意: 在使用sum()函数对可迭代对象进行求和时,需要满足参数必须为可迭代对象且可迭代对象中的元素类型必须是 数值型,否则将提示TypeError。
sum函数 可以 快速的将列表中所有的数值元素进行求和计算,然后将最后的求和结果返回。通过sum()函数对列表元素进行求和计算的常见用法如下:
# 昵 称:XieXu & CSDN@追光者♂
# 时 间: 2023/4/9/0009 15:28
a_list = [1, 3, 5, 7, 9] # 普通列表
print('a_list列表元素和为:', sum(a_list))
print('a_list列表元素和加1:', sum(a_list, 1))
# 学生成绩列表
b_list = ['数学 98', '语文 99', '英语 97'] # 学生成绩列表
# 由于sum函数无法进行字符串的求和计算,所以需要先将指定元素转换为int类型
int_list = [int(b_list[0][2:]), int(b_list[1][2:]), int(b_list[2][2:]), ]
print('学生的总成绩为:', sum(int_list), '分')
# 10名学生Python理论成绩列表
grade_list = ['98','99','97','100','100','96','94','89','95','100']
int_list = [int(i) for i in grade_list] # 循环将字符类型转换为int
print('Python理论总成绩为:',sum(int_list))
# 求0到100之间的所有偶数和
evenNumbers = [] # 空列表
i = 0
while i <= 100: # 循环条件
if i % 2 == 0:
evenNumbers.append(i) # 将偶数添加至列表
i += 1
print('0到100(含100)之间,所有偶数的和为:', sum(evenNumbers)) # 求和
通过
sum函数
计算元组中元素和,与列表元素求和相似。sum()函数对元组元素进行求和计算的常见用法如下:
# 元组的元素求和
a_tuple = (10, 20, 30, 33, 54, 21, 11) # 普通元组
print('普通元组元素和为:', sum(a_tuple))
print('普通元组元素求和后加1:', sum(a_tuple, 1))
print('元组中第二个元素至第五个元素的和为:', sum(a_tuple[1:5]))
print('元组中第五个元素以后的所有元素和为:', sum(a_tuple[5:]))
# 商品销量
b_tuple = (('1月', 2531), ('2月', 3352), ('3月', 1528)) # 某商品前三月销量
number_tuple = tuple(a[1] for a in b_tuple) # 将销量数据提取成元组
print('1月至3月总销量为:', sum(number_tuple))
print('最高销量与最低销量的总和为:', sum((max(number_tuple), min(number_tuple))))
# 跳远成绩求和
# 元组中两组数据分别为红队和蓝队跳远成绩
many_tuple = (('158 厘米', '179 厘米', '211 厘米'), ('163 厘米', '186 厘米', '204 厘米'))
int_tuple = (tuple(int(a[:3]) for a in many_tuple[0]), tuple(int(b[:3]) for b in many_tuple[1]))
print('红队总成绩为:', sum(int_tuple[0]))
print('蓝队总成绩为:', sum(int_tuple[1]))
print('两队中第一名跳远成绩的总和为:', sum((int_tuple[0][0], int_tuple[1][0])), '厘米')
print('两队总成绩为:', sum((sum(int_tuple[0]), sum(int_tuple[1]))))
many_tuple = (('158 厘米', '179 厘米', '211 厘米'), ('163 厘米', '186 厘米', '204 厘米'))
for a in many_tuple[0]:
print(a[:3])
many_tuple = (('158 厘米', '179 厘米', '211 厘米'), ('163 厘米', '186 厘米', '204 厘米'))
for a in many_tuple[1]:
print(a[:3])
在sun函数中计算range对象与空迭代对象的求和是比较特殊的,常见用法如下:
# 昵 称:XieXu & CSDN@追光者♂
# 时 间: 2023/4/11/0011 16:05
# range对象与空迭代对象的求和
a_range = range(10) # 创建range对象
print('a_range对象的和为:', sum(a_range))
# 传入空列表对象,返回参数start值
print('空列表的和为:', sum([], 10))
# 传入空元组对象,返回参数start值
print('空元组对象和为:', sum((), 20))
# 传入空字典对象,返回参数start值
print('空字典对象和为:', sum({}, 30))
集合也是一个比较特殊的可迭代对象,在集合中如果有相同的元素值将会被自动移除。sum()函数对集合元素进行求和计算的常见用法如下:
# 集合元素求和
a_set = {1, 2, 3, 4, 5, 5, 1} # 普通数值集合
# 由于集合会自动去除相同数值,所以总和为15
print('a_set集合中数值总和为:', sum(a_set))
# 由于最后相加的5为start参数,并不是集合中的元素所以不会被集合当做相同数值所去除
print('a_set集合中数值总和加5为:', sum(a_set, 5))
# 由于集合并不支持指定某个元素,所以需要将集合转换为列表再进行元素范围的指定
print('a_set集合中第二个元素至第四个元素的和为:', sum(set(list(a_set)[1:5])))
再来看一个例子:
# 元素为字符串类型的集合数据
b_set = {'158 厘米', '179 厘米', '211 厘米', '158 厘米'}
# 由于集合不支持指定元素的提取所有需要转换为列表
b_list = list(b_set)
# 提取字符串数据中的数值数据并转换为int类型
int_list = list(int(i[0:3]) for i in b_list)
# 在集合中相同的字符串元素也会被去除,所以集合数据中的总长度为548 厘米
print('集合数据中的总长度为:', sum(set(int_list)), '厘米')
再来一个例子:
# 字符串学生成绩集合数据
c_set = {'数学 118分', '语文 119分', '英语 116分'}
c_set.add('物理 68分') # 添加单个物理成绩
# 添加列表到集合,列表元素会被分解为单个元素后添加到集合
c_set.update(['化学 47分', '政治 59分', '历史 60分', '体育 30分'])
int_set = set(list(int(i[-4:-1]) for i in c_set))
print('该学生中考成绩为:', sum(int_set), '分')
在实现获取学生运动项目决赛积分最高的班级时,首先需要将所有的班级转换为列表,然后将每个班运动数据中的积分数据提取出来并计算每个班级的积分总和,再通过获取最大值的方式获取积分总和,最后通过获取最高积分的列表索引,来确定学生运动项目决赛中积分最高的班级。代码如下:
# 昵 称:XieXu & CSDN@追光者♂
# 时 间: 2023/4/11/0011 16:14
# 获取哪班学生运动项目决赛积分最高
# 模拟学生运动项目决赛积分
sport = {'一班': [{'项目': '田径100米', '名次': 3, '积分': 16, '性别': '男子'},
{'项目': '田径100米', '名次': 1, '积分': 20, '性别': '女子'}, ],
'二班': [{'项目': '田径100米', '名次': 2, '积分': 18, '性别': '男子'},
{'项目': '田径100米', '名次': 3, '积分': 16, '性别': '女子'}, ],
'三班': [{'项目': '田径100米', '名次': 1, '积分': 20, '性别': '男子'},
{'项目': '田径100米', '名次': 2, '积分': 18, '性别': '女子'}]
}
fraction_list = [] # 保存积分的数据
class_list = list(sport.keys()) # 保存班级的列表
for i in sport.values():
# 将每个班的积分总和添加至列表中
fraction_list.append(sum(list(map(lambda v: v['积分'], i))))
# 获取分数最高的下标
max_index = fraction_list.index(max(fraction_list))
print('本次学生运动项目决赛积分最高的是:', class_list[max_index])
在获取社区对居民统计的遗漏人员时,首先需要将每个家庭中的家庭人员数据进行提取,由于人员数据为字符型所以需要进行数值的转换。然后通过sum函数对遗漏人员进行数量的统计工作。代码如下:
# 昵 称:XieXu & CSDN@追光者♂
# 时 间: 2023/4/11/0011 16:20
# 获取社区对居民统计的遗漏人员
# 社区对某栋楼居民数据采集时,遗漏的数据
family1 = {'楼层': '1层', '房间号': '101室', '家庭人数': '4人'}
family2 = {'楼层': '1层', '房间号': '103室', '家庭人数': '2人'}
family3 = {'楼层': '3层', '房间号': '302室', '家庭人数': '1人'}
family4 = {'楼层': '5层', '房间号': '503室', '家庭人数': '4人'}
family5 = {'楼层': '6层', '房间号': '601室', '家庭人数': '3人'}
family_list = [family1, family2, family3, family4, family5] # 家庭居民信息列表
floor_list = list(filter(lambda l: l['楼层'] == '1层', family_list)) # 楼层为1层居民数据
# 获取楼层为1层居民总数
floor_number = sum(map(lambda n: int(n.get('家庭人数')[0]), floor_list))
total_quantity = sum(map(lambda n: int(n.get('家庭人数')[0]), family_list))
print('该栋1层居民总数为:', floor_number, '人')
print('该栋共有', total_quantity, '人被遗漏!')
在实现商品销售额的查询系统时,需要考虑到比较常见的两种查询情况,一种是单品销售额的查询,另一种是所有商品总销售额的查询。
在实现单品销售额查询时,
首先需要判断用户输入的商品型号在销售数据中是否存在
,然后获取对应商品型号的信息再进行销售额的计算
。
在实现所有商品总销售额查询时,
首先需要获取每款商品的单价信息与每款商品的销售数量
,然后对每款商品的销售额进行计算
,最后再计算所有商品的销售总额
。代码如下:
# 昵 称:XieXu & CSDN@追光者♂
# 时 间: 2023/4/11/0011 16:23
# 商品销售额的查询系统
# 获取手机销售额的函数
def total_sales(target):
# 手机销售额数据
pro1 = {'product': 'iPhone xs', 'price': 8699, 'sales': 32}
pro2 = {'product': 'iPhone xs Max', 'price': 9599, 'sales': 28}
pro3 = {'product': 'iPhone xr', 'price': 6499, 'sales': 11}
proList = [pro1, pro2, pro3] # 保存销售额数据
if target == '1': # 输入1查询单品销售额
name = input('请输入手机型号!')
# 获取所有手机型号
iPhone_names = list(map(lambda i: i.get('product'), proList))
if name in iPhone_names: # 判断输入的手机型号是否存在
# 获取手机型号对应的销售数据
commodity_info = list(filter(lambda i: i.get('product') == name, proList))
print(name, '销售总额为:', (commodity_info[0]['price']
* commodity_info[0]['sales']), '元')
else:
print('没有该商品信息!')
if target == '2': # 输入2查询总销售额
price_list = map(lambda p: p.get('price'), proList) # 每款手机的单价信息
sales_list = map(lambda s: s.get('sales'), proList) # 每款手机的销售数量
result = [a * b for a, b in zip(price_list, sales_list)] # 每款手机的销售额
print('所有手机的总销售额为:', sum(result), '元')
while True:
option = input('请根据需求输入:\n'
'输入1为获取单品销售额! \n'
'输入2为获取总销售额!\n'
'输入0为退出查询系统!\n')
if option == '0': # 输入0退出循环
break # 退出循环
if option == '1' or option == '2':
total_sales(option) # 调用获取手机销售额的函数
else:
print('请输入正确命令!')
来看几个测试:
问: 你知道动漫《秦时明月》吗?可以给我讲一下它的大致剧情以及男女主人公的经历吗?
答:
秦时明月是一部以中国历史上的秦朝为背景的全民型动画,以荆天明为主人公,讲述了他从一个普通的农家少年成长为盖世英雄的故事。
故事背景取自秦灭六国到西楚霸王项羽灭秦这段英雄辈出的历史时期,时间跨度约30年。在这个时代中,各种历史事件和民间传说纷呈迭起,仗剑游走江湖的名士侠隐和对现代中国产生深远影响的
诸子百家
更是在这个合纵连横的大时代
中悉数登场。
主人公荆天明是一个体内流淌英雄之血的少年,生活在战国时期的楚国。他的父亲曾是楚国的将军,但在一次战斗中被秦军俘虏并杀害。从此以后,荆天明便立志要为父亲报仇,并成为一个盖世英雄。
在故事的开始,荆天明只是一个普通的农家少年,但是他的
内心充满了正义和勇气
。他在一次偶然的机会中,得到了一把神秘的剑——“赤霄”,并开始了他的江湖生涯。【???这里,是赤霄麽ლ(′◉❥◉`ლ)】
在他的旅途中,荆天明结识了许多江湖中的侠士和英雄,也经历了许多艰难险阻。他与秦国的名将白起展开了一场生死搏斗,并在最后关头领悟到了“
仁者无敌
”的真谛。在这个过程中,他也逐渐成长为一个勇敢、坚定的人物。
整个故事中,男女主人公荆天明和高月之间的感情线也是一大看点。高月是一个美丽聪慧的女孩,她与荆天明在旅途中相遇,并逐渐产生了情感上的共鸣。但是,由于种种原因,他们之间的感情经历了许多波折。
总的来说,秦时明月是一部充满正义、勇气和感性的动画作品,深受观众喜爱。
注:关于如何获取“文心一言”的内测资格,可参阅我的往期文章:【文心一言】内测版 沉浸式深度体验——不间断 提问问题!它的表现如何?
热门专栏推荐:
持续创作优质好文ing哦…✍✍✍
记得一键三连哦!!!
求关注!求点赞!求个收藏啦!