找最大数字-第12届蓝桥杯国赛Python真题解析

news2024/11/26 13:57:48

[导读]:超平老师的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的结果,考试时用一用倒是可以的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1659918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】C/C++中新const用法:const成员

欢迎来到CILMY23的博客 本篇主题为: C/C中新const用法:const成员 个人主页:CILMY23-CSDN博客 系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux 感谢观看,支持的可以给个一键三连,点赞…

如何设置海外虚拟IP的地址?

经济全球化发展,需要使用到海外ip的场景越来越多,比如跨境电商、海外投放、市场调研等等。海外虚拟ip地址已经成为了个人和企业不可或缺的工具。那么作为用户,该如何设置海外虚拟IP的地址? 设置海外IP的方式有以下几种&#xff1a…

栈结构(c语言)

1.栈的概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈&am…

Day2:调节屏幕驱动

Day2调节屏幕驱动 原理图: 要想调节屏幕驱动

泛微OA中,设置明细表某一列隐藏

泛微OA中,设置明细表的某一列字段进行隐藏 最近在接到的需求中,要求在主表中选择的平台类型为亚马逊的时候,在新增明细表数据时需要做到实时的提醒,例如:选择亚马逊时,所填的渠道不能为空 这个时候&#x…

word 毕业论文格式调整

添加页眉页脚 页眉 首先在页面上端页眉区域双击,即可出现“页眉和页脚”设置页面: 页眉左右两端对齐 如果想要页眉页脚左右两端对齐,可以选择添加三栏页眉,然后将中间那一栏删除,即可自动实现左右两端对齐&#x…

腾讯云ubuntu新建用户后,命令行只显示$

这是因为,新建用户命令行解释器默认是sh,需要手动切换为bash,bash可以认为是sh的加强版本。 所以我们只需要将,shell切换为bash就好了。 切换到root 修改配置文件 vim/etc/bash 将sh修改为bash

不走寻常路!酷开科技不断升级酷开系统满足消费者日益增长的需求

在科技日新月异的今天,人们对生活品质的要求越来越高。为此,酷开科技不断升级酷开系统,以满足消费者日益增长的需求。为了让消费者体验更好的服务,在酷开系统中设立了酷开会员,满足消费者的更多需求。丰富的特权和定制…

Highcharts 实现3D饼图 tooltip轮播

实现3D饼图,并且轮播显示tooltip 自定义toottip样式 import Highcharts from highcharts; import highcharts from highcharts; import highcharts3d from highcharts/highcharts-3d;highcharts3d(Highcharts); highcharts3d(highcharts); import { useEffect, use…

分享四种免费获取SSL的方式

SSL证书目前需要部署安装的网站很多,主要还是基于国内目前对证书的需求度在不断的升高,网站多了、服务器多了之后。网络安全问题就成为了大家不得不面对的一个重要的问题了。SSL证书的作用有很多,这里就不一一详述了,本期作品主要…

同一局域网内互传文件

1. 打开要共享的文件夹,然后在地址框内输入cmd 2. 弹出的命令框内输入python -m http.server (这么就创建好了共享服务器) 3.win R输入cmd运行 4.输入ipconfig找到IP地址 5.另一台同一局域网内的机子就可以在网页浏览器输入ip和端口号…

智能奶柜:健康生活新风尚

智能奶柜:健康生活新风尚 在快节奏的都市生活中,健康与便利成为了现代人的双重追求。而在这两者交汇之处,智能奶柜应运而生,它不仅是科技与生活的完美融合,更是日常营养补给的智慧之选。 清晨的第一缕温暖 —— 新鲜…

谷歌上架,白包号放着备用,啥也没干也被封?是什么情况?

众所周知,Google Play Store是全球最大的应用商店之一,每天都有大量的应用被上传和下架。 同时,随着谷歌上架行业的发展,谷歌现在的审核系统越来越智能和先进,开发者们尝试着各种方法来提高上架成功率。其中&#xff…

TCP及IP协议

TCP协议的传输是可靠的,而UDP协议的传输“尽力而为” TCP传输可靠性———确认,重传,排序,流控。 流控:滑动窗口机制 TTL--- 数据包每经过一个路由器的转发,他的TTL值将减1,当一个数据包中的T…

武汉星起航:五对一精细化服务助力合作伙伴开启亚马逊新篇章

武汉星起航电子商务有限公司以其专业的服务和独特的模式,为合作伙伴在亚马逊自营领域开拓了一片新天地。自2017年专注于亚马逊自营以来,武汉星起航不仅积累了丰富的经验,更在2020年成立了武汉星起航电子商务有限公司,进一步提升了…

文件夹名批量重命名:一键实现中文到意大利语的高效翻译!文件管理更高效!

文件夹管理成为了我们日常工作和生活中的重要一环。当文件夹名称繁杂且多样,尤其是涉及到不同语言时,如何快速、准确地批量重命名,成为了许多人的迫切需求。今天,我们就来聊聊如何轻松实现文件夹名从中文到意大利语的批量翻译&…

计算机网络学习记录 网络的大概认识 Day1

你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github gitee 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^) 想看更多 那就点个关注吧 我会尽力带来有趣的内容 计算机网络学习记录Day1 本文基于1.1 计算机网络在信息…

Spring底层入门(十)

1、内嵌tomcat boot框架是默认内嵌tomcat的,不需要手动安装和配置外部的 Servlet 容器。 简单的介绍一下tomcat服务器的构成: Catalina: Catalina 是 Tomcat 的核心组件,负责处理 HTTP 请求、响应以及管理 Servlet 生命周期。它包…

机器人学【一、刚体运动】

机器人学 文章目录 机器人学1. 刚体运动1.1 刚体变换刚体刚体变换 1.2 三维空间中的旋转运动群求质点坐标的相对变换旋转矩阵的合成法则用线性算子来计算叉积叉积的右手法则叉积用于计算线速度旋转的指数坐标Rodrigues公式计算旋转矩阵的例子四元数 1.3 三维空间中的刚体运动齐…

人人都是开发者?Baidu Comate智能代码助手改变你传统的编程之路

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引入一、人人都是开发者二、Baidu Comate 智能编码助手2.1 Baidu Comate 是什么?2.2 Baidu Comate 支持那…