Python 笔试输入模板总结

Python 笔试输入模板总结

1. 普通单行输入

适合输入一个整数:

复制代码
n = int(input())

适合输入一行多个整数:

复制代码
a, b = map(int, input().split())

适合输入一个数组:

复制代码
arr = list(map(int, input().split()))

2. 推荐笔试模板:sys.stdin.readline

适合大多数有明确行结构的题。

复制代码
import sys

input = sys.stdin.readline

读一个整数:

复制代码
n = int(input())

读一行多个整数:

复制代码
a, b = map(int, input().split())

读数组:

复制代码
arr = list(map(int, input().split()))

n 行数据:

复制代码
n = int(input())

for _ in range(n):
    a, b = map(int, input().split())

读多组测试数据:

复制代码
T = int(input())

for _ in range(T):
    n = int(input())
    arr = list(map(int, input().split()))

3. EOF 输入:每行一组数据

适合题目没有给 T,一直读到输入结束。

输入示例:

复制代码
1 2
3 4
10 20

模板:

复制代码
import sys

for line in sys.stdin:
    if not line.strip():
        continue

    a, b = map(int, line.split())
    print(a + b)

4. EOF 输入:所有数字连续处理

适合不关心换行,只按数字顺序处理。

输入示例:

复制代码
1 2
3 4
10 20

模板:

复制代码
import sys

data = list(map(int, sys.stdin.read().split()))

for i in range(0, len(data), 2):
    a = data[i]
    b = data[i + 1]
    print(a + b)

5. 没有固定行数,每组第一个数表示长度

输入示例:

复制代码
3 1 2 3
2 4 5
4 6 7 8 9

表示:

复制代码
长度3:1 2 3
长度2:4 5
长度4:6 7 8 9

模板:

复制代码
import sys

data = list(map(int, sys.stdin.read().split()))
idx = 0

while idx < len(data):
    n = data[idx]
    idx += 1

    arr = data[idx:idx + n]
    idx += n

    print(arr)

6. 数组可能分多行输入

如果题目说输入 n 个整数,但不保证在同一行。

输入示例:

复制代码
5
1 2
3 4
5

模板:

复制代码
import sys

data = list(map(int, sys.stdin.read().split()))

n = data[0]
arr = data[1:1 + n]

print(arr)

如果后面还有其他数据,用指针写法:

复制代码
import sys

data = list(map(int, sys.stdin.read().split()))
idx = 0

n = data[idx]
idx += 1

arr = data[idx:idx + n]
idx += n

7. 操作类题目

输入示例:

复制代码
5
1 8
1 9
7
1 6
8

模板:

复制代码
import sys

input = sys.stdin.readline

q = int(input())

for _ in range(q):
    op = list(map(int, input().split()))

    if op[0] == 1:
        pass
    elif op[0] == 2:
        pass

8. 输出优化

如果输出很多行,建议先存起来,最后一次性输出。

复制代码
ans = []

ans.append(str(123))
ans.append(str(456))

print("\n".join(ans))

例如:

复制代码
import sys

input = sys.stdin.readline

q = int(input())
ans = []

for _ in range(q):
    x = int(input())
    ans.append(str(x * 2))

print("\n".join(ans))

记忆口诀

复制代码
小数据:input()
大多数笔试:sys.stdin.readline()
读到 EOF:for line in sys.stdin
不管换行:sys.stdin.read().split()
输出很多:先存 ans,最后 join
相关推荐
从零开始学习人工智能2 小时前
【踩坑实录】WSL2 解决 onnxruntime\-gpu ImportError: libcudart\.so\.13 无 CUDA13 运行库问题
python
大明者省2 小时前
WSL2 Ubuntu22.04 GPU训练环境配置指南
人工智能·算法·计算机视觉
卷无止境3 小时前
在 awesome-fastapi 里,哪些库值得一看?
后端·python
zhanghaha13143 小时前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
Python私教3 小时前
API 输出模型怎么设计:从 model_dump() 到显式展示层
python·fastapi
白狐_7983 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
Python私教4 小时前
本地 AI 工具服务该绑定 127.0.0.1 还是 0.0.0.0?
python·fastapi
zander2584 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
卷无止境4 小时前
FastAPI 的Admin面板生态
后端·python
Shell运维手记4 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github