映射做网站,缩我短链接生成器,重庆好的网站制作公司,施工合同简单版[导读]#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后#xff0c;受到了广大老师和家长的好评#xff0c;非常感谢各位的认可和厚爱。作为回馈#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》#xff0c;这是解读系列的第60讲。
找最大数字#…
[导读]超平老师的Scratch蓝桥杯真题解读系列在推出之后受到了广大老师和家长的好评非常感谢各位的认可和厚爱。作为回馈超平老师计划推出《Python蓝桥杯真题解析100讲》这是解读系列的第60讲。
找最大数字本题是2021年5月29日举办的第12届蓝桥杯青少组Python编程全国总决赛真题编程部分第1题。题目要求编程找出给定N个数字中最大的数字这N个数字包含整数和小数。
先来看看题目的要求吧。
一.题目说明
编程实现
给定N个数字包含整数和小数找到N个数中最大的数字。
输入描述
输入N个数字N 2)且N个数字之间以英文逗号隔开
输出描述
输出N个数字中最大的数字
样例输入
4,8,2
样例输出
8
02
二.思路分析
这是一道简单的计算题考查的知识点包括循环、条件、列表和字符串处理。
乍一看这是一道超级简单的题目很多同学不假思索地就能想到如下两种解决方案 直接使用max()函数获取最大值 使用sort()函数排序再获取最大项
对不对呢只能说部分正确但不全対你知道不对的地方在哪里吗
问题就出在数据类型上本题要求输入的数据可以是整数也可以是小数基本上可以分为如下3种情形
1). 都是整数比如4, 8, 2
2). 都是小数比如2.718, 3.14, 1.618
3). 整数和小数混合比如3, 6.6, 5
于是问题就来了是将输入的数字转成int还是float呢
都转成int肯定是不行的它会直接丢失小数部分。都转成float呢也不行比如4, 8, 2如果都转成float那么输出的就是8.0而不是8了。
这就导致输出数据和输入数据不一致的情况那应该怎么办呢
仔细想想你会发现类型转换是必不可少的只是不能统一转换我们可以转换一下思路按需转换。
也就是说在获取输入的时候不要转换直接将数字字符串保存到列表中即可然后在遍历每一个列表项时按需转换如果是小数则使用float进行转换否则就是要int转换。
这样一来棘手的问题就迎刃而解了 思路有了接下来我们就进入具体的编程实现环节。
三.编程实现
根据上面的思路分析我们编写程序如下 代码不难简单说明4点
1). nums列表中保存的是字符串类型
2). max_num表示最大值初始值是列表的第1项类型和输入保持一致后续在比较过程中不断更新最大值其类型可能是int也可能是float
3). 判断小数的依据是看是否包含小数点直接使用in运算符即可
4). 在比较的时候需要转换类型。
至此整个程序就全部完成了你也可以输入不同的数字序列来测试效果啦。
四.总结与思考
本题代码在10行左右涉及到的知识点包括 循环语句主要是for...in 条件语句 列表的使用 字符串的处理及运算 类型转换
作为本次国赛的第1题难度一般但也不是简单的送分题。关键有两点一是看清题目的描述和要求二是要充分理解Python的弱类型特性。
Python是一种弱类型编程语言这意味着我们不需要明确声明变量数据类型变量会在运行时根据赋值语句或表达式的值来确定其类型。
主要表现在如下3个方面
1). 变量无须声明在Python中可以直接将任何类型的值赋给变量而无需事先声明其数据类型。
2). 数据类型可以随时改变Python允许变量在程序执行过程中改变其数据类型。
3). 自动类型转换在某些情况下Python会自动进行类型转换以满足运算需求。例如当你尝试将一个整数和一个浮点数相加时Python会自动将整数转换为浮点数以执行加法运算。
在本题中我们正是利用了Python的弱类型特点在每次比较的过程中将最大值转成int或float类型然后赋值给max_num变量。
超平老师给你留两道思考题
1). 将输入的数字以字符串的形式保存到列表中直接使用max()函数获取最大值是否可行为什么
2). 除了本题中的方法你还有什么其它方法来确保输出和输入的数据完全一致
你还有什么好的想法和创意吗也非常欢迎和超平老师分享探讨。
如果你觉得文章对你有帮助别忘了点赞和转发予人玫瑰手有余香
需要源码的可以移步至“超平的编程课”gzh。
五.补充
此题还有一个更为简单的方法就是直接使用eval()函数然后结合max()函数代码如下
# 直接使用eval
nums eval(input() )
# 找到并打印最大的数字
print(max(nums))eval() 是 python 中功能非常强大的一个函数它会将字符串当成有效的表达式来求值并返回计算结果。也就是说eval() 函数会把里面的字符串参数的引号去掉把中间的内容当成Python的代码
比如最常见的就是自动实现 list、dict、tuple、与str 之间的转化上面代码中的eval(input())会将输入的数字自动转成list并保存各项数据。
它的缺点就是具有较大的安全隐患用户可以输入任何可以执行的代码或命令并执行想想也是挺恐怖的。
所以在实际开发时千万别使用eval()函数直接转换input的结果考试时用一用倒是可以的。