Preparing Experience

正在准备页面内容

565 字
1 分钟
Python的ACM模式基础
2026-03-21

一、单行输入#

对10个整数从小到大排序,处理10个整数,并打印出来

Python3 case1
pure stdlib 10 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

二、多行输入,不确定行数#

给定正整数A和B,计算A+B

Python3 case2
pure stdlib 15 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

三、多行输入,确定行数#

输入一个n,然后再输入n组数据样例,返回他们的和

Python3 case3
pure stdlib 5 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

四、多行输入,指定结束符号#

还是两数之和,指定0 0结束

Python3 case4
pure stdlib 7 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

五、不确定行数,不确定个数#

输入多组数据样例,每组数据占一行,每一行的输入划分为第一个数和其他数,第一个数代表后面多少数求和,返回和。

Python3 case5
pure stdlib 8 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

六、确定行数不确定个数#

先输入n,然后给n行,每行个数不确定,返回和

Python3 case6
pure stdlib 5 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

七、多行输入,不确定类型#

给定 n,然后输入 n 行,每行包含成绩单信息。

输出三行,第一行语文最好的学生姓名学科分数,第二行数学成绩最好的学生姓名学科分数,第三行英语成绩最好的学生姓名学科分数。

Python3 case7
pure stdlib 34 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

八、sys.stdin 的几种常见写法#

等价于不断读到 EOF 为止,一行一行读入,不用自己写 while True + try/except。一般有如下三种情况:

1. 逐行读到 EOF#

Python3 case8
pure stdlib 5 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

2. 一次性读完#

Python3 case9
pure stdlib 5 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

3. 代替 input() 提速#

Python3 case10
pure stdlib 8 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

九、ast.literal_eval 解析嵌套结构#

有些题目的本地输入会直接写成 Python 风格的嵌套列表,比如:

[[1,2],[3,4],[5,6]]

或者像随机链表那样:

[[7,null],[13,0],[11,4],[10,2],[1,0]]

这时候如果手动 split 会很麻烦,用 ast.literal_eval 往往更省事。

它的作用是:安全地把"字符串形式的字面量"解析成真正的 Python 数据结构。

Python3 case11
pure stdlib 6 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

例如输入:

[[1,2],[3,4],[5,6]]

输出就是:

[[1, 2], [3, 4], [5, 6]]

如果输入里有 null,Python 不认识,需要先替换成 None

Python3 case12
pure stdlib 6 lines
Frozen Editor 默认折叠,点击展开查看完整代码
展开代码

这个方法特别适合:

  • 二维数组
  • 嵌套列表
  • 树、图、随机链表这类带结构的本地模拟输入

注意这里一般用的是 ast.literal_eval,而不是 eval,因为前者更安全,只会解析字面量,不会执行任意代码。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

部分信息可能已经过时

Encrypted Post
Hot100的ACM模式题解