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
相关推荐
lihao lihao2 小时前
Linux信号
开发语言·c++·算法
Java患者·2 小时前
《Python 人脸识别入门实践:从人脸检测到人脸比对完整实现》
开发语言·python·opencv·目标检测·计算机视觉·目标跟踪·视觉检测
宸丶一2 小时前
Day 10:LangGraph - Agent 的图执行引擎
java·windows·python
大白话_NOI2 小时前
【洛谷 P2249】查找(深基 13. 例 1)+ 详细分析
c++·算法
吠品2 小时前
C++实现m行n列带边框的长方形输出
算法
weixin_307779132 小时前
Python写入Shell文件使用Linux系统的换行符
linux·开发语言·python·自动化
智者知已应修善业2 小时前
【51单片机2个外部中断显示中断历时,初始化8左移3位共阳数码管】2024-6-6
c++·经验分享·笔记·算法·51单片机
zmzb01032 小时前
Python课后习题训练记录Day130
开发语言·python
西安邮电大学3 小时前
分治算法详细讲解
java·后端·其他·算法·面试