分数约分-第11届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第20讲。

分数约分,本题是2020年1月12日举办的第11届蓝桥杯青少组Python编程选拔赛真题,题目要求编写程序对给定的分数进行约分。

先来看看题目的要求吧。

一.题目说明

编程实现:

约分是把分数化成最简分数的过程,约分后分数的值不变,且分子分母的最大公约数为1,若最终结果的分母为1,则直接用整数表示。

提示:

两个以逗号分隔输入的整数,可以采用如下方法进行转换、分离:

str = input()

nums = eval(str)

输入描述:

输入两个正整数(以逗号分隔)分别作为分数的分子和分母。

输出描述:

第一行显示输入的分数;

第二行显示约分后的最简分数 ,若分母为1,直接用整数表示。

样例输入1:

27,30

样例输出1:

27/30

9/10

样例输入2:

36,6

样例输出2:

36/6

6

评判标准:

下列各评分项单独计分,得分累加,共25个计分点。

  • 6分:能接收输入的信息,在第一行正确显示输入的分数,格式符合样例;

  • 9分:至少针对一个输入,能输出正确的最简分数,输出格式符合样例;

  • 10分:针对裁判指定所有样例的输入,都能输出正确的最简分数,旦输出格式符合样例。

二.思路分析

这是一道和数学相关的算法题,考查的知识点包括循环和数学运算。

题目要求对两个整数构成的分数进行约分,那什么是约分呢,约分的依据又是什么呢?

图片

把分数简化成最简分数的过程就叫约分,例如27 / 30这是一个分数,27可以写成3 * 9,30可以写成3 * 10,那么27 / 30可以写成 9/ 10,这里的公因子3被同时约掉了。

把一个分数的分子、分母同时除以公约数,分数的值保持不变。

约分时,如果能很快找到分子和分母的最大公约数,直接用它们的最大公约数去除就可以了。

所以,本题的重点是如何计算两个整数的最大公约数,英文是Greatest Common Divisor,简称GCD。

图片

求解最大公约数是编程学科中的典型问题,方法也比较多,常见的解法有如下4种:

  • 枚举算法

  • 欧几里得算法

  • 更相减损法

  • Stein算法

其中,枚举算法是最简单的,其基本思路可以分为如下3个步骤:

1). 找到两个数字中的较小者,从而确定循环范围,假设为从n到1;

2). 从n开始,判断两个数字是否能被n整除,如果是,则n就是最大公约数,结束循环,否则转到3);

3). 将n减1,重复步骤2)。

其流程图如下所示:

图片

为了方便,我们可以将计算最大公约数的过程定义成函数,调用该函数时,传入两个整数,返回它们的最大公约数。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们分两步来编写程序:

  • 定义函数计算最大公约数

  • 对分数进行约分

1. 定义函数计算最大公约数

根据前面的分析,定义函数如下:

图片

代码不多,强调4点:

1). 交换两个变量,在Python编程中不需要使用临时变量,直接使用x,y = y,y即可,这是Python独有的特性,非常方便;

2). 在循环的时候,需要从x到1,因此range()函数的参数,必须要写上-1;

3). 函数中的return语句有两个作用,一是返回值,二是结束函数; 

4). 任何两个整数的最小公约数是1。

2. 对分数进行约分

有了函数,接下来就简单了,先获取输入的a和b,然后调用函数计算出最大公约数,接着将a和b都除以最大公约数,就可以得到约分后的结果了。

不过,分母有可能出现1的情况,此时需要额外判断一下,具体代码如下:

图片

上面的代码不难理解,需要说明的是获取a和b的值时,用到了列表推导式和多变量赋值的编程技巧。

在Python中,多变量赋值的基本写法如下:

a = 1b = 2c = 3

当然,我们也可以直接用一行代码来简化,如下:

a, b, c = 1, 2, 3

实际上,还有一种特殊的赋值方式,如下:

a, b, c = [1, 2, 3]

当一个集合类型(包括列表、元组和集合)赋值给多个变量的时候,多个变量是依次获取指定下标位置的值。

运行程序,输入27,30,效果如下:

图片

输入36,6效果如下:

图片

至此,整个程序就全部完成了,你也可以输入不同的数字来测试效果。

四.总结与思考

本题的分数为25分,代码在15行左右,涉及到的知识点包括:

  • 循环语句,主要for...in循环;

  • 条件语句;

  • 输入和输出处理;

  • 运算符,重点是%、//和and等;

  • 函数的定义及使用;

题目难度中等,难点有两个,一是从题目的描述中分析出最大公约数这个关键点,二是如何计算两个整数的最大公约数。

超平老师给你留一道思考题,除了上面讲到的枚举算法外,还有3种更高效的方法,你知道是怎么实现的么,超平老师后续还会专门进行分析讲解的。

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至“超平的编程课”gzh。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大创项目推荐 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

4G无线工业级路由器在智能制造设备互联互通中的角色

随着工业技术的不断发展和进步,智能制造已经成为了现代制造业的重要趋势和发展方向。而在智能制造过程中,设备之间的互联互通是至关重要的一环。在这个过程中,4G无线工业级路由器扮演着重要的角色,它提供了稳定可靠的网络连接&…

【算法Hot100系列】两数相加

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

MQTT中的保留消息(Retained Message)

一条保留消息是MQTT中保留标志设置为true的一条普通消息。代理(broker)为对应的主题保留最后的保留消息及对应的QoS。每一个订阅了该主题的客户端在订阅之后会马上收到这个保留消息。代理(broker)为每个主题只存储一条保留消息。本…

OpenStack-train版安装之安装Swift(对象存储服务)、安装Cinder(块存储服务)

安装Swift(对象存储服务)、安装Cinder(块存储服务) 安装Swift(对象存储服务)控制节点安装和配置对象存储节点安装和配置Create and distribute initial rings配置与启动验证 安装Cinder(块存储服…

云仓酒庄的品牌雷盛红酒分享红酒里加二氧化硫有害吗?

雷盛葡萄酒是广州万豪酒业有限公司旗下主力葡萄酒品牌,该品牌由云仓酒庄负责全国运营。雷盛(LEESON)品牌系列葡萄酒有幸邀请著名导演张纪中先生担任品牌代言人。采用多国家采购、多葡萄酒品种、多价位区间的全系列整体品牌形式,让…

Nginx配合Vue的history模式

加上一行代码就行: try_files $uri $uri/ /index.html;

Java医院3D人体智能导诊系统源码 Uniapp+springboot 微信小程序

“智能导诊”以人工智能手段为依托,为人们提供智能分诊、问病信息等服务,在一定程度上满足了人们自我健康管理、精准挂号等需求。智能导诊可根据描述的部位和病症,给出适合病症的科室参考。 智能导诊页面会显示男性或女性的身体结构图&#x…

深度学习 Day14——P3天气识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 文章目录 前言1 我的环境2 代码实现与执行结果2.1 前期准备2.1.1 引入库2.1.2 设置GPU(如果设备上支持GPU就使用GPU,否则使用C…

Gerrit 提交报错missing Change-Id in message footer

直接执行提示的命令: gitdir$(git rev-parse --git-dir); scp -p -P 29418 liyjgerrit.ingageapp.com:hooks/commit-msg ${gitdir}/hooks/ 如果报错: subsystem request failed on channel 0 在.git/hooks目录下看有没有生成commit-msg文件&#xff…

(四)STM32 操作 GPIO 点亮 LED灯 / GPIO工作模式

目录 1. STM32 工程模板中的工程目录介绍 2. GPIO 简介 3. GPIO 框图剖析 1)保护二极管及上、下拉电阻 2) P-MOS 管和 N-MOS 管 3)输出数据寄存器 3.1)ODR 端口输出数据寄存器 3.2)BSRR 端口位设置/清除寄存器 4&a…

一点技术细节

匈牙利算法: 14-4: 匈牙利算法 Hungarian Algorithm_哔哩哔哩_bilibili 课件:https://github.com/wangshusen/AdvancedAlgorithms.git SWin transformer: Swin Transformer论文精读【论文精读】_哔哩哔哩_bilibili patch:灰色 窗口&…

八、Seata的XA模式

目录 八、Seata的XA模式8.3 XA模式多数据源场景1 环境搭建2、使⽤XA模式解决事务 八、Seata的XA模式 8.3 XA模式多数据源场景 1 环境搭建 建库建表 代码的db.sql中 创建工程 添加依赖 <dependency><groupId>org.springframework.boot</groupId><ar…

ssl证书问题导致本地启动前端服务报500

报错如下&#xff1a;注意查看报错信息 问题&#xff1a;系统原是http&#xff0c;后台调整为https后&#xff0c;ssl证书有点问题&#xff0c; vue项目本地服务&#xff0c;使用代理&#xff0c;webpack默认&#xff0c;证书强校验&#xff0c;导致请求无法发出&#xff0c;后…

COSCon 的台前幕后:KCC@上海 12.2 活动总结

沐浴着冬日暖阳&#xff0c;KCC上海的第三次活动如期而至。第八届中国开源年会&#xff08;COSCon23&#xff09;的顺利举办离不开许多优秀志愿者们的辛勤付出&#xff0c;本次活动作为 COSCon23 的 After Party&#xff0c;我们有幸邀请到了其中的部分台前幕后人员&#xff0c…

c语言单向链表

看如下代码&#xff0c;这是一个完整的可运行的c源文件&#xff0c;要注意的点&#xff1a; c语言程序运行不一定需要头文件NULL其实是 (void*)0&#xff0c;把指针赋值成(void*)0,就是防止程序员不想该指针被引用的时候被引用&#xff0c;引用地址为0的值程序会引起系统中断&…

【Vitamin ; amino acid 】

【NAD NADPH&#xff1b; FMN FAD &#xff1b; NMN -化学】

数字化转型对企业有什么好处?

引言 数字化转型已经成为当今商业领域中的一股强大力量&#xff0c;它不仅仅是简单的技术更新&#xff0c;更是企业发展的重要战略转变。随着科技的迅猛发展和全球化竞争的加剧&#xff0c;企业们正在积极探索如何将数字化的力量融入到他们的运营和战略中。 数字化转型不仅是传…

基于ssm游戏美术外包管理信息系统源码和论文

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;线下管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

spring面试:二、bean的生命周期和循环引入问题(三级缓存、@Lazy)

bean的生命周期 Spring容器在进行实例化时&#xff0c;会将xml配置的的信息封装成一个BeanDefinition对象&#xff0c;Spring根据BeanDefinition来创建Bean对象&#xff0c;里面有很多的属性用来描述Bean。 其中比较重要的是&#xff1a; beanClassName&#xff1a;bean 的类…