ACM模式Python处理输入输出的操作方法(避坑指南)

 更新时间:2026年08月30日 09:26:55   作者:烟雨AC  
ACM模式下,Python处理输入输出需高效且精确,以下是常见输入输出场景的分类解析、代码模板及避坑指南,感兴趣的朋友一起看看吧

ACM模式下,Python处理输入输出需高效且精确。以下是常见输入输出场景的分类解析、代码模板及避坑指南。

一、ACM模式 vs. 核心代码模式

特性ACM模式核心代码模式(如LeetCode)
输入输出需自行处理标准输入(sys.stdin/input())系统自动处理输入,只需实现函数逻辑
代码结构包含if __name__ == '__main__':和主逻辑仅需写函数体
适用场景牛客、赛码等大厂笔试平台力扣等在线刷题平台
常见错误格式错误(PE)、未处理多组数据逻辑错误为主

二、输入处理详解(附Python代码模板)

1. 单行输入

  • 场景:一行含固定数量数据(如两个整数)
  • 代码:
a, b = map(int, input().split())  # 分割后转整型
  • 注意:split()默认按空格分割,若用逗号则改为split(',')

2. 多行输入(已知行数)

  • 场景:首行指定后续数据行数(如矩阵行数)
  • 代码:
n = int(input())  # 读取行数
data = [list(map(int, input().split())) for _ in range(n)]  # 二维列表

3. 多组输入(未知行数,以EOF结束)

  • 场景:数据组数未知,直到文件结束(如A+B问题的多组测试)
  • 代码:
import sys
for line in sys.stdin:
    a, b = map(int, line.split())
    # 处理逻辑

或(兼容终端输入):

while True:
    try:
        a, b = map(int, input().split())
    except EOFError:
        break

4. 不定长一维数组

  • 场景:单行数据量不定(如1 2 3 4)
  • 代码:
arr = list(map(int, input().split()))  # 直接转为整型列表

5. 字符串处理

  • 场景:含空格或特殊分隔符的字符串
  • 代码:
s = input().strip()  # 去除首尾空格
words = s.split()    # 默认按空格分割单词

若需保留空格:

s = sys.stdin.readline().strip()  # 整行读取

6. 复杂结构(多测试用例)

  • 场景:首行为测试用例数t,每用例含多行数据
  • 代码:
t = int(input())
for _ in range(t):
    n = int(input())  # 当前用例数据行数
    for i in range(n):
        row = list(map(int, input().split()))
    # 处理逻辑

三、输出处理技巧

1. 基础输出

  • 单值输出:print(result)
  • 数组输出(空格分隔):
arr = [1, 2, 3]
print(" ".join(map(str, arr)))  # 输出 "1 2 3"

2. 格式化输出

  • 保留小数:print(f"{3.14159:.2f}") # 输出 3.14
  • 补前导零:print(f"{5:03d}") # 输出 005

3. 高性能输出(减少I/O次数)

output_lines = []
for i in range(1000):
    output_lines.append(str(i))
print("\n".join(output_lines))  # 一次性输出所有结果

关键:避免在循环中频繁调用print(),尤其数据量 > 10⁴ 时 。

四、高频踩坑与解决方案

  1. Presentation Error (PE)
    • 原因:多输出空格/换行(如print(a, end=" ")末尾多空格)
    • 解决:用join替代手动添加分隔符,确保行末无多余空格 。
  2. 未处理多组数据导致提前退出
    • 错误代码:仅用input()读单组数据
    • 正确方案:始终用for line in sys.stdin或try-except循环 。
  3. 大数据量超时
    • 优化点:
      • 输入改用sys.stdin.read()一次性读取再拆分(比逐行input()快30%)
      • 输出改用列表收集后统一打印 。
  4. 数据类型转换遗漏
    • 错误:input()返回字符串,未转整型直接计算
    • 检查:arr = list(map(int, input().split()))确保转换到位 。

五、综合示例:A+B Problem(大厂高频题)

题目:多组测试,每行两个整数,输出和 。

import sys
def solve(a, b):
    return a + b
if __name__ == '__main__':
    output_lines = []
    for line in sys.stdin:
        if not line.strip():  # 跳过空行
            continue
        a, b = map(int, line.split())
        output_lines.append(str(solve(a, b)))
    print("\n".join(output_lines))

六、备考建议

  1. 模板化训练:将上述输入场景整理为代码片段库,笔试时快速复用。
  2. 调试技巧:
    • 本地测试时用Ctrl+D(Linux/Mac)或Ctrl+Z(Windows)模拟EOF终止输入。
    • 使用文件重定向测试:python script.py < input.txt > output.txt。

ACM模式下,输入输出处理占30%时间,但错误率高达60%。掌握模板化编写与边界检查,可避免“算法正确却得0分”的尴尬。关键口诀:

  • 输入:先分后转(split()+map())、EOF循环、sys.stdin加速
  • 输出:join统一、格式校对、批量打印

到此这篇关于ACM模式Python处理输入输出的操作方法(避坑指南)的文章就介绍到这了,更多相关 Python ACM模式输入输出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python位移操作和位运算的实现示例

    Python位移操作和位运算的实现示例

    本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • Python3.5装饰器典型案例分析

    Python3.5装饰器典型案例分析

    这篇文章主要介绍了Python3.5装饰器,结合实例形式分析了装饰器修饰有参数函数、装饰器修饰函数参数等情况相关使用技巧,需要的朋友可以参考下
    2019-04-04
  • 超详细注释之OpenCV旋转图像任意角度

    超详细注释之OpenCV旋转图像任意角度

    这篇文章主要介绍了OpenCV旋转图像任意角度,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • pytorch超详细安装教程之Anaconda、PyTorch和PyCharm全套安装流程

    pytorch超详细安装教程之Anaconda、PyTorch和PyCharm全套安装流程

    这篇文章主要介绍了pytorch超详细安装教程之Anaconda、PyTorch和PyCharm全套安装流程,介绍基于Anaconda环境以及PyCharm软件结合,安装PyTorch深度学习框架,需要的朋友可以参考下
    2023-04-04
  • python 以16进制打印输出的方法

    python 以16进制打印输出的方法

    今天小编就为大家分享一篇python 以16进制打印输出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 浅谈用Python实现一个大数据搜索引擎

    浅谈用Python实现一个大数据搜索引擎

    这篇文章主要介绍了浅谈用Python实现一个大数据搜索引擎,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • pandas中字典和dataFrame的相互转换

    pandas中字典和dataFrame的相互转换

    有时候需要把dic转换为DataFrame格式,便于查看和存储,下面这篇文章主要给大家介绍了关于pandas中字典和dataFrame相互转换的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • python内置函数compile(),complex()的使用

    python内置函数compile(),complex()的使用

    这篇文章主要为大家详细介绍了python内置函数compile(),complex()的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 详解python分布式进程

    详解python分布式进程

    在本专题里,小编给大家讲述了关于python分布式进程的相关知识点内容,需要的朋友们参考下。
    2018-10-10
  • django ManyToManyField多对多关系的实例详解

    django ManyToManyField多对多关系的实例详解

    今天小编就为大家分享一篇django ManyToManyField多对多关系的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论