oj第一题python解法

news/2025/11/16 23:08:11/文章来源:https://www.cnblogs.com/isbabydoll/p/19229298

用pyhon实现自动识别输入截止功能

一、 序言与题目引入

对于新接触编程语言如python和c的新同学来说,学校的oj平台上有很好配套练习,既有一定难度,又不会像LeetCode等程序员公用的成熟平台那样太难上手,不过学长学姐们在设计题目时为了增加趣味(或者恶趣味?),第一题的解答需要额外学一个知识点。
接下来看题:

image

初看这题只是简单的加减,如果我们直接上手解答,可以得到这些代码(python):
image

当然我们看到有部分代码功能重复,显得有些冗余,或许可以尝试优化成函数形式,并用map代替原有列表:
image
其实这个时候已经初见端倪了,输出要输出两遍呢,题目有说要输出几遍吗?暂且按下疑问,我们试运营看看
image
哎呀,果然出问题了,我们再细看要求,它说的是需要输入的一系列a和b对,也就是n对(a,b),但n却是未知数,我们并不知道输入的人会输入几对(a,b),也许是一对,也许像测试样例一样是两对,但也有可能是更多对。
这个时候很多人可能会想到循环,诶我循环读取不就好了吗,可以读取更多对数,但是循环的终止条件又该怎么设置呢?总不能让它一直循环,那就是死循环了,但如果设置了具体的数,那也还是预判了要输入的对数
所以遇到这样非固定的输入到底该怎么办呢?

二、 解题过程

2.1 用c语言解决

先注意看学长学姐们留下的小Tips——‘查查EOF’,哦?EOF又是什么呢?,我们来详细看看

(1)EOF定义

通过查询资料,我们可以了解到:
在编程中,EOF,即End of File,为文件结束符,它是一个标记,用于表示输入流(如文件、标准输入、管道等)的结束,它并非一个实际的字符,而是输入设备或系统在数据读取完毕后返回的 “终止信号”。
而在C语言中,EOF是一个预定义的宏(通常定义为-1),用于标记输入流的结束。大多数输入函数(如getchar()、fgets()、fscanf()等)会通过返回特定值来表示 “已读取到 EOF”。

(2)用c语言实操

简单来说,当系统在读取我们的输入时,只要捕捉到EOF这个终止信号,就会停止读取,这样说,只要我们在循环的过程中加入这个信号不就行了,如果一直没捕捉到就可以一直输入,输入结束后加入这个信号就能示意输入结束了,岂不是完美符合我们的要求。那么究竟可不可以呢,也得要我们来试试(记得切换成c语言):
image
可以看到我们将循环条件改成了只要没捕捉到终止信号就一直输入,结果是正确的。

tips:

这里值得一提的是,代码中的终止信号也就是EOF,在实际操作中发出与正常结束的回车不同,在本题不需要答题者实操,仅作了解,以下是两个系统的发送信号终止的操作:
Linux/macOS:在命令行输入时,按 Ctrl+D(直接按,无需额外回车),系统会向程序发送 “EOF 信号”,表示输入流结束。
Windows:在命令行输入时,按 Ctrl+Z,然后按回车,系统发送 EOF 信号。

2.2 用Python解决

虽然我们用EOF成功解决了这道题,但那是基于C语言解决的,如我一样常用python的人难道就解不了这道题吗?这自然是不可能的,直接的EOF用法只存于C语言,但类似的逻辑在大部分编程语言中都是存在的。
在python语言中没有像C语言那样的EOF宏,但可以通过异常捕获迭代器特性来检测输入流的结束,其效果与C的EOF机制一致。

2.2.1 异常捕获

用input()+eoferror:input()函数用于读取一行输入(默认从标准输入stdin读取),当读取到 EOF 时会抛出EOFError异常,通过捕获该异常即可检测输入终止。
原理:
input()本质是从sys.stdin读取数据,当sys.stdin中没有更多数据(即 EOF)时,input()无法获取内容,因此抛出EOFError。
image

2.2.2 基于sys.stdin迭代器

sys.stdin是 Python 的标准输入流对象,它本身是一个可迭代对象,迭代时会自动逐行读取数据,直到 EOF 时终止迭代,无需手动处理异常。
原理:
sys.stdin的迭代器会在读取到输入流末尾(EOF)时自动停止,因此for line in sys.stdin循环会自然结束。
tips:sys.stdin读取的每行包含末尾的换行符(\n),需用strip()等方法处理。

image

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

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

相关文章

11.16方法

11.16方法 1. 方法 是什么? 方法(method)是程序中最小的执行单元 有什么用? 重复的代码、具有独立功能的代码可以抽取到方法中。方法可以提高代码的复用性、可以提高代码的可维护性 2.方法的格式 方法就是把一些代…

基于Tcl命令的HyperView截图

准备工作 Tcl/Tk 命令可以实现 HyperWorks 的中更底层的操作和其他高级功能。应当注意在 HyperMesh 中不支持 Tcl 命令,必须在 HyperMesh Desktop 或 HyperWorks 中使用。不过 HyperView 似乎就直接是在 HyperWorks 环…

2025 年 11 月智能吉他厂家推荐排行榜,无弦吉他,自动档吉他,伴奏吉他,MIDI吉他,创新科技与便捷演奏体验之选

2025 年 11 月智能吉他厂家推荐排行榜,无弦吉他,自动档吉他,伴奏吉他,MIDI吉他,创新科技与便捷演奏体验之选 随着数字音乐技术的快速发展,智能乐器领域迎来了革命性突破。无弦吉他、智能吉他、自动档吉他、伴奏吉…

团队作业3——需求改进与系统设计

团队作业3——需求改进与系统设计团队作业3——需求改进与系统设计这个作业属于哪个课程 计科23级12班这个作业要求在哪里 团队作业3——需求改进与系统设计这个作业的目标 需求与原型改进、系统设计、Alpha阶段任务分…

完整教程:Redis(69)Redis分布式锁的优点和缺点是什么?

完整教程:Redis(69)Redis分布式锁的优点和缺点是什么?2025-11-16 23:02 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important…

2025 年 11 月 Q355B/Q345B/16Mn 方钢厂家推荐排行榜,低合金高强度方钢,结构用方钢,建筑用方钢公司推荐

2025 年 11 月 Q355B/Q345B/16Mn 方钢厂家推荐排行榜 在建筑、机械制造和基础设施建设领域,Q355B、Q345B 和 16Mn 方钢作为低合金高强度结构钢材,凭借其优异的力学性能和焊接特性,成为关键承重构件和机械部件的首选…

2025 年 11 月精密仪器厂家推荐排行榜,触摸仪表,手表锁具,测试针,医疗传感器,Pogopin声学弹簧公司精选

2025 年 11 月精密仪器厂家推荐排行榜,触摸仪表,手表锁具,测试针,医疗传感器,Pogopin声学弹簧公司精选 随着工业4.0和智能制造的深入推进,精密仪器行业正迎来技术升级与市场需求的双重驱动。精密仪器作为工业生产…

MySQL 数据库核心操作全解析:从创建到备份与连接管理 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

evalscope使用2-使用自定义数据集压测

使用evalscope进行大模型测试-使用自定义数据集进行压测 使用自定义数据集进行压测,需要定义模板、提示词数据集、自定义数据集插件,命令行中指定--dateset参数为custom 1、evalscope命令,其中指定dataset为cust…

2025 年 11 月摩托车/机车厂家推荐排行榜:街车、跑车、巡航机车、越野摩托车品牌实力与市场口碑深度解析

2025 年 11 月摩托车/机车厂家推荐排行榜:街车、跑车、巡航机车、越野摩托车品牌实力与市场口碑深度解析 行业背景与发展趋势 摩托车产业作为现代交通工具领域的重要组成部分,近年来呈现出多元化、专业化的发展态势。…

20232402 2025-2026-1 《网络与系统攻防技术》实验五实验报告

20232402 2025-2026-1 《网络与系统攻防技术》实验五实验报告 1.实验内容 1.1 域名与IP信息查询 用whois、dig、nslookup、traceroute/tracert及在线工具查询baidu.com,获取DNS注册人及联系方式,域名对应IP地址,IP注…

2025 年 11 月热轧方钢/扁钢厂家推荐排行榜,方钢,扁钢,热轧方钢,热轧扁钢,优质钢材生产公司推荐

2025年11月热轧方钢/扁钢厂家推荐排行榜 行业背景与发展现状 热轧方钢和扁钢作为基础金属材料,在建筑结构、机械制造、轨道交通等领域具有广泛应用。随着我国制造业转型升级的深入推进,对热轧钢材的尺寸精度、表面质…

2025 年 11 月冷拉/冷拔六角钢厂家推荐排行榜,冷拉六角钢,冷拔六角钢,精密冷拉六角钢,高强度六角钢公司推荐

2025年11月冷拉/冷拔六角钢厂家推荐排行榜 行业背景分析 冷拉/冷拔六角钢作为重要的工业基础材料,在机械制造、汽车工业、电梯制造等领域发挥着关键作用。随着制造业向高质量方向发展,市场对冷拉六角钢、冷拔六角钢的…

2025 年 11 月氢氧化镁厂家推荐排行榜,矿石氢氧化镁,水镁石氢氧化镁,阻燃剂氢氧化镁,改性氢氧化镁公司推荐

2025年11月氢氧化镁厂家推荐排行榜:矿石氢氧化镁、水镁石氢氧化镁、阻燃剂氢氧化镁、改性氢氧化镁公司推荐 行业背景与发展现状 氢氧化镁作为一种重要的无机化工产品,在阻燃材料、环保处理、医药制备等领域具有广泛应…

3种决策树算法

这是一个经典的西瓜数据集,让我们来求它的信息增益(ID3决策树算法)、决策树、信息增益率(C4.5决策树算法)、基尼指数【信息增益】(ID3算法) 记住两个量"信息熵"和"信息增益" [信息熵]表示信…

(Kotlin高级特性三)Kotlin密封类(Sealed Class)在何时比枚举更适用? - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年 11 月冷拉/冷拔扁钢厂家推荐排行榜,冷拉扁钢,冷拔扁钢,精密冷拉扁钢,高强度冷拔扁钢公司推荐

2025年11月冷拉/冷拔扁钢厂家推荐排行榜 行业背景分析 冷拉/冷拔扁钢作为现代制造业的重要基础材料,在机械制造、汽车工业、电梯制造等领域发挥着关键作用。随着我国制造业向高质量发展转型,对冷拉扁钢、冷拔扁钢等精…

20232309 2025-2026-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 1.1学习内容几类信息搜集的方向 各类强大的信息搜集相关工具 网络踩点流程 网络扫描方式1.2实验任务从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系…

20232421 2025-2026-1 《网络与系统攻防技术》实验五实验报告

1.实践内容从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:使用whois…

CIO的能力

目录背景和价值沟通技术战略运营参考资料 背景和价值沟通 技术 战略 一是对企业战略本身的理解;二是对战略目标、业务目标、商业模式三者及其相互关系的理解 运营 运营是企业不可缺少的工作事项,也决定了企业的生死。…