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
相关推荐
txzrxz21 分钟前
数论:排列数、组合数、费马小定理、逆元、同余定理
c++·算法·数论·组合数·费马小定理·逆元·排列数
再渊22 分钟前
基因归因到底怎么计算的?
python·深度学习·机器学习
xqqxqxxq24 分钟前
LeetCode Hot100 双指针专项题解笔记
笔记·算法·leetcode
E_ICEBLUE31 分钟前
Python 拆分 Excel 文件:使用 Spire.XLS 实现按工作表、行、列和条件拆分
python·excel
aiqianji43 分钟前
有哪些稳定的AI短篇小说写作软件可以推荐?
人工智能·python
闪电悠米1 小时前
力扣hot100-54.螺旋矩阵-模拟边界控制详解
算法·leetcode·矩阵
变量未定义~1 小时前
虚拟节点-星石传送阵(4星)、强连通分量
数据结构·算法
Ulyanov1 小时前
Python雷达电子对抗仿真引擎(一):打破单体瓶颈,构建微服务与ECS架构的顶层设计
开发语言·python·微服务·云原生·架构·雷达电子对抗
IT方大同1 小时前
C语言分支与循环语句
c语言·开发语言·算法
蓝创工坊Blue Foundry1 小时前
批量提取图片中的数字:怎样整理成一张可核对的 Excel
python·ai·ocr·excel·paddlepaddle