ACM模式输入输出笔记(Python)

Sunsy 发布于 2026-08-26 439 次阅读


很多大厂笔试和面试采用ACM模式,但是平常刷题都在leetcode,ACM接触较少,写输入输出就需要好长一段时间,这里总结一些常见形式。

1. A+B问题I

题目描述

你的任务是计算a+b。

输入描述

输入包含一系列的a和b对,通过空格隔开。一对a和b占一行。

输出描述

对于输入的每对a和b,你需要依次输出a、b的和。

如对于输入中的第二对a和b,在输出中它们的和应该也在第二行。

输入示例
3 4
11 40
输出示例
7
51
import sys

for line in sys.stdin:
    a,b=line.split(' ')
    print(int(a)+int(b))

2. A+B问题II

题目描述

计算a+b,但输入方式有所改变。

输入描述

第一行是一个整数N,表示后面会有N行a和b,通过空格隔开。

输出描述

对于输入的每对a和b,你需要在相应的行输出a、b的和。

如第二对a和b,对应的和也输出在第二行。

输入示例
2
2 4
9 21
输出示例
6
30
提示信息

注意,测试数据不仅仅一组。也就是说,会持续输入N以及后面的a和b

while True:
    try:
        n = int(input())
        for i in range(n):
            # 拆分读取和转换,方便单独处理每行的格式错误
            line = input().strip()
            a, b = map(int, line.split())
            print(a + b)
    except EOFError:
        break
    except ValueError:
        # 遇到非数字输入时,跳过当前行,继续处理后续数据
        print("输入格式错误,跳过当前行")
        continue

3. A+B问题III

题目描述

你的任务依然是计算a+b。

输入描述

输入中每行是一对a和b。其中会有一对是0和0标志着输入结束,且这一对不要计算。

输出描述

对于输入的每对a和b,你需要在相应的行输出a、b的和。

如第二对a和b,他们的和也输出在第二行。

输入示例
2 4
11 19
0 0
输出示例
6
30
while True:
    try:
        # 读取输入并清理首尾空白,修正变量名拼写
        user_in = input().strip()
        # 分割并转换为整数
        a, b = map(int, user_in.split())
        
        # 终止条件:输入0 0时退出整个循环
        if a == 0 and b == 0:
            break
        
        # 正常计算并输出和
        print(a + b)
    
    # 精准捕获输入结束异常(比如终端按Ctrl+D)
    except EOFError:
        break
    # 捕获输入格式错误(比如非数字、个数不对)
    except ValueError:
        print("输入格式错误,请输入两个整数(用空格分隔)")
        continue

通用模式

import sys
from typing import List


data = sys.stdin.read().strip().split()
if not data:
    return
idx = 0  # 全局指针
# ... 根据题目格式读取数据 ...
# 最后输出:sys.stdout.write(str(ans))


n = int(data[idx])
idx += 1
arr = list(map(int, data[idx:idx+n]))
idx += n
此作者没有提供个人介绍。
最后更新于 2026-08-26