565 字
1 分钟
Python的ACM模式基础
一、单行输入
对10个整数从小到大排序,处理10个整数,并打印出来
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
二、多行输入,不确定行数
给定正整数A和B,计算A+B
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
三、多行输入,确定行数
输入一个n,然后再输入n组数据样例,返回他们的和
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
四、多行输入,指定结束符号
还是两数之和,指定0 0结束
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
五、不确定行数,不确定个数
输入多组数据样例,每组数据占一行,每一行的输入划分为第一个数和其他数,第一个数代表后面多少数求和,返回和。
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
六、确定行数不确定个数
先输入n,然后给n行,每行个数不确定,返回和
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
七、多行输入,不确定类型
给定 n,然后输入 n 行,每行包含成绩单信息。
输出三行,第一行语文最好的学生姓名学科分数,第二行数学成绩最好的学生姓名学科分数,第三行英语成绩最好的学生姓名学科分数。
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
八、sys.stdin 的几种常见写法
等价于不断读到 EOF 为止,一行一行读入,不用自己写 while True + try/except。一般有如下三种情况:
1. 逐行读到 EOF
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
2. 一次性读完
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
3. 代替 input() 提速
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 数据结构。
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
例如输入:
[[1,2],[3,4],[5,6]]输出就是:
[[1, 2], [3, 4], [5, 6]]如果输入里有 null,Python 不认识,需要先替换成 None:
Frozen Editor
默认折叠,点击展开查看完整代码
展开代码
这个方法特别适合:
- 二维数组
- 嵌套列表
- 树、图、随机链表这类带结构的本地模拟输入
注意这里一般用的是 ast.literal_eval,而不是 eval,因为前者更安全,只会解析字面量,不会执行任意代码。
部分信息可能已经过时