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
相关推荐
倒头就睡的小比特4 天前
算法竞赛C++常用的STL
c++·算法
默_笙4 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
qq_426003964 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技4 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
猎头南楼4 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
只睡四小时4 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
旖旎夜光4 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控