计算最大数位,本题是2022年4月23日举办的第13届蓝桥杯青少组Python编程省赛真题编程部分第2题,13届一共举办了两次省赛,这是第二次省赛。题目要求对于给定的正整数N,请编程计算整数N中各数位最大的那个数字并输出。
先来看看题目的要求吧。
时间限制:3000MS
内存限制:589824K8
编程实现:
给定一个正整数N,输出整数N中各数位最大的那个数字。
例如:N = 132,则输出3。
输入描述:
输入一个正整数N
输出描述:
输出正整数N中各数位最大的那个数字
输入样例:
132
输出样例:
3
评分标准:
10分:能正确输出一组数据;
10分:能正确输出两组数据;
20分:能正确输出三组数据。
这是一道简单题,涉及的知识点包括输入输出、max()函数、数学元素和列表等。
字符串方法 列表方法 数学方法
max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])
对于数字类类型(如 int, float):按照数值大小比较;
对于字符串(str):按照字典顺序(即 ASCII 编码顺序)进行比较
所以,我们可以直接使用max(s)获取s中的最大数字。
思路有了,接下来,我们就进入具体的编程实现环节。
字符串方法
列表方法
数学方法
1. 字符串方法
根据前面的思路分析,编写代码如下:
2. 列表方法
根据前面的思路分析,编写代码如下:
代码比较简单,强调两点:
1). 对于字符串而言,可以直接使用for c in s的方式来获取每个字符;
2). 这里将每个数字都转成了数字,实际上,直接使用字符也是可以的,因为字符在比较的时候,是按照ASCII码进行的,效果是一样的,相对来说,数字更好理解一些;
3. 数学方法
根据前面的思路分析,编写代码如下:
代码不多,说明两点:
1). 获取最低位,使用取模运算%;
2). 去掉最低位时,需要使用整除运算//,不能使用/运算。
输入输出处理;
max()函数;
列表推导式;
拆位算法;
本题分值为40分,代码比较少,几乎没有什么难度,基本上就是送分题。关键点是深入理解max()函数,做到灵活运用。
上面给出了3种解决方案,其中第一种是最简单的。但是很多同学并没有采取这种方法,原因就在于对max()函数理解不够,没想到竟然还可以这么用。
第二种方案是大多数同学采用的方法,毕竟大家平常都是这么用的,易于理解。
第三种方案则相对要麻烦一些,但是它适用于所有的编程语言,通用性强。
还需要强调一点,就是Python和C++中都有max()函数,作用都是一样的,但是用法有所不同,不要搞混了。
你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。
需要源码的,可以添加本人微信。
另外,超平老师创建了一个蓝桥杯备考交流群,这是专门为老师和家长打造的免费社群,您可以与来自全国各地的老师、家长共同交流经验,分享学习心得。
超平老师也会给大家带来及时的赛事动态,备考攻略,真题资源分享,帮助各位更好地备考第15届蓝桥杯赛事,力争取得优异的成绩。
扫码或长按加入微信群