Python处理算法题输入输出

news/2025/3/15 21:06:39/文章来源:https://www.cnblogs.com/smartljy/p/18774179

Python处理算法题输入输出

内容

以下是 Python 处理算法题输入输出的详细指南,对比 C++ 习惯并给出高效写法:


一、输入处理核心方法

Python 处理输入通常比 C++ 更简洁,但要注意 数据类型转换批量读取 优化。

1. 基础输入方法

场景描述 C++ 写法 Python 等效写法
读取单行字符串 cin >> s; s = input().strip()
读取单个整数 cin >> n; n = int(input())
读取一行多个整数 cin >> a >> b >> c; a, b, c = map(int, input().split())
读取不确定数量的整行数字 while(cin >> x) nums = list(map(int, input().split()))

2. 高效读取方法(大数据量)

使用 sys.stdin 提升读取速度(类似 C++ 的 scanf):

import sys# 读取单行并去除首尾空白符
line = sys.stdin.readline().strip()# 一次性读取所有内容(适合密集输入)
data = sys.stdin.read().split()

3. 常见输入模式处理

场景1:多测试用例,每行一个整数

import sys
for line in sys.stdin:n = int(line.strip())# 处理逻辑

场景2:首行为n,后续n行数据

n = int(input())
for _ in range(n):s = input().strip()

场景3:矩阵输入(例如3x3网格)

matrix = [list(map(int, input().split())) for _ in range(3)]

场景4:不定长输入直到EOF

import sys
for line in sys.stdin:if not line.strip(): breaka, b = map(int, line.split())

二、输出处理技巧

Python 的输出灵活度极高,重点掌握 格式化字符串批量输出

1. 基础输出方法

需求 C++ 写法 Python 等效写法
输出字符串+换行 cout << s << endl; print(s)
输出不换行 cout << s; print(s, end='')
输出多个变量用空格分隔 cout << a << " " << b; print(a, b)print(f"{a} {b}")

2. 高级格式化输出

格式化字符串(类似 printf

# 保留两位小数
print("{:.2f}".format(3.1415926))  # 输出 3.14# 补前导零(如日期格式)
print("{:02d}-{:02d}".format(3, 5))  # 输出 03-05# 使用 f-string(Python 3.6+)
name = "Alice"
print(f"Hello, {name}! Score: {95.5:.1f}")

输出列表/矩阵(元素用空格分隔)

arr = [1, 2, 3, 4]
print(" ".join(map(str, arr)))  # 输出 1 2 3 4matrix = [[1,2], [3,4]]
for row in matrix:print(" ".join(map(str, row)))

三、实战代码模板

例1:A+B Problem

# 输入:多行,每行两个整数
import sys
for line in sys.stdin:a, b = map(int, line.strip().split())print(a + b)

例2:动态二维矩阵处理

# 输入:第一行两个整数n,m,接下来n行每行m个数字
n, m = map(int, input().split())
grid = [list(map(int, input().split())) for _ in range(n)]# 输出:转置后的矩阵
for col in zip(*grid):print(" ".join(map(str, col)))

例3:不定长数组排序输出

# 输入:一行多个整数
nums = list(map(int, input().split()))
nums.sort()
print(" ".join(map(str, nums)))

四、性能优化建议

  1. 大规模数据:优先使用 sys.stdin.readline()sys.stdin.read() 一次性读取。
  2. 避免重复拼接字符串:批量处理数据后用 join 输出。
  3. 减少IO次数:使用列表暂存结果,最后统一输出。

总结

\[\boxed{ \begin{aligned} &\text{输入:} \\ &\quad \text{小数据→ } \texttt{input().strip()} \\ &\quad \text{大数据→ } \texttt{sys.stdin} \\ &\text{输出:} \\ &\quad \text{简单格式→ } \texttt{print(a, b)} \\ &\quad \text{复杂格式→ } \texttt{f-string} \\ &\text{模板:} \\ &\quad \text{循环读取+即时处理} \end{aligned} } \]

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

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

相关文章

Android开发--Lesson01--页面布局

一.View视图 在Android开发中所有的UI元素都是由View和ViewGroup构建而成的。ViewGroup作为一个容器既可以装载View视图空间,同时也可装载ViewGroup。即一种布局可以嵌套另一种布局。二.ViewGroup RelativeLayout RelativeLayout是Android中一种非常灵活的布局方式,它允许子…

第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp

第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp hello_web查看源代码发现有两个文件,访问一下Tips是phpinfo 里面可以看到disable_functions hackme.php中$lapUCm=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%…

使用WLAN接口将温度和相对湿度发送到家庭网络web服务器

在本文中,我想利用WLAN接口,为家庭网络中的web服务器提供温度和相对湿度。但是,我将使用物有所值的DHT20传感器和带有SH1106驱动IC的1.3英寸OLED,以尽量减少重复。 但首先是树莓派Pico W的引脚图,以及树莓派Pico和Pico W的区别:虽然外形尺寸和引脚(很大程度上)保持不变,…

【水】洛谷 P3913 (待续)

今天NaN在刷水题时碰到这么一道题:洛谷P3913 https://www.luogu.com.cn/problem/P3913 代码的思路特别简单:用全部格子数 - 没被車侵占的行数 \(\times\) 列数即可. code void solve() {cin >> n >> k;g = h = n;for (ll i = 1; i <= k; i++){cin >> x …

web77笔记(POST+FFI)

web77 命令执行最后一题,php7.4 FFI,php7.4以上才有 https://www.php.net/manual/zh/ffi.cdef.php https://www.php.cn/php-weizijiaocheng-415807.html $ffi = FFI::cdef("int system(const char *command);");//创建一个system对象 $a=/readflag > 1.txt;//没…

day:22 python函数——介绍及自定义函数运用

一.函数的定义 函数是组织好,可以重复使用,用来实现单一,或者关联功能的代码段 二.pycharm中运用的结构三.函数的优点? a.降低代码的冗余 b.增加代码的复用性,提高开发效率 c.提高程序的拓展性 d.把代码片段放在函数当中 四.定义函数 (1)自定义函数 (一)自定义函数 a.函数格式…

英语单词音标重读符号读法作用

比如explicit,重读的是`后面的第一个元音即i

量子网络操作系统 QNodeOS 资料收集

2025年3月14日,通过科技日报的报道知道了这个量子计算领域的重大突破 —— 全球首个量子网络操作系统 QNodeOS 问世。欧洲的量子互联网联盟(QIA)的研究人员2025年3月12日在《自然》(Nature)杂志上发表了论文 An operating system for executing applications on quantum n…

Typora的基本的一些使用用法

markdown 标题 二级标题 (在最前面两个#号加空格) 三级标题 (在最前面三个#号加空格) 字体 Hello,World!(粗体:两边各两个星号) Hello,World!(斜体:两边各一个星号) Hello,World!(粗体加斜体:两边各三个星号) Hello,World!(删除体:两边各两个波浪号) 引用(大于加…

http--nodejs原生web服务

创建http服务const http = require(node:http) const url = require(node:url)http.createServer((req, res) => {}).listen(98, () => {console.log(server is running on port 98) }) 区分请求方法 例如常见的 POST、GET req表示前端的入参(请求参数)。 res 表示后…

Windows server 中 静默安装SQL SERVER 数据库 命令 参数

这篇文章记录一下自己如何在Windows Server Core上安装和配置SQL Server。 安装之前的检查 安装SQL Server的操作系统要求检查 第一件事是需要仔细检查SQL Server的要求文档,这个文档里详细的列出了目前SQL Server支持的操作系统版本,最重要的一条就是检查当你在使用云上的虚…

(3).工厂方法模式

我们接上一个模式的实例: (1).创建水果接口 IFruit:1 namespace 工厂方法模式2 {3 public interface IFruit4 {5 /// <summary>6 /// 水果的单价7 /// </summary>8 double Amount { get; }9 10 11 /// <s…