Python3 ACM模式输入输出全攻略:从零搞定牛客网机试题
第一次参加牛客网的机试时,我盯着屏幕上那个"运行错误"的提示足足发呆了五分钟——明明本地测试样例都通过了啊!直到点开错误详情才发现,原来是因为输出多了一个空格。这种看似微不足道的格式错误,在ACM模式下足以让你的得分归零。本文将带你系统掌握Python3在ACM竞赛中的输入输出技巧,避开那些新手必踩的坑。
1. ACM模式基础认知
与LeetCode的核心代码模式不同,ACM模式要求选手自行处理所有输入输出。这意味着你需要:
- 从标准输入读取测试数据
- 处理可能的格式转换
- 严格按照题目要求输出结果
典型错误场景包括但不限于:
- 多输出或少输出空格/换行
- 未处理多组测试数据
- 数据类型转换错误
- 未处理EOF(文件结束)情况
来看一个简单示例。假设题目要求"输入两个整数,输出它们的和",以下两种写法在ACM模式下的命运截然不同:
# 错误写法(只处理单组数据)
a, b = map(int, input().split())
print(a + b)
# 正确写法(处理多组数据直到EOF)
while True:
try:
a, b = map(int, input().split())
print(a + b)
except:
break
2. 输入处理全解析
2.1 基础输入方法
Python3的input()函数每次读取一行输入,返回字符串类型。处理数字输入时,通常需要配合以下方法:
# 单行多个整数输入(如"1 2 3")
data = list(map(int, input().split()))
# 单行多个字符串输入(如"hello world")
words = input().split()
# 单行逗号分隔输入(如"1,2,3")
nums = list(map(int, input().split(',')))
重要细节:
split()默认以任意空白字符(空格、制表符等)分割map()返回的是迭代器,如需多次使用应转为list- 文件结束时
input()会抛出EOFError,需要用try-except处理
2.2 多组输入处理模板
根据题目输入格式的不同,我们总结出6种常见处理模板:
模板1:不定组数,每行两个数
while True:
try:

4586

被折叠的 条评论
为什么被折叠?



