You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python 3中如何读取输入文件特定部分并存储到对应变量?

如何读取输入的特定部分并存储到变量

我来帮你解决这个问题——你遇到的核心问题是对input()函数的理解有点偏差:input()每次只会读取一行输入,所以你用input().splitlines()只能处理第一行内容,自然拿不到后面的4行。下面分两种常见场景给你具体的解决方案:

场景1:从控制台(标准输入)读取

方法1:逐行读取(简单直接)

先读取第一行拆分出整数,再循环读取后续4行存入列表:

# 读取第一行的两个整数
x, y = map(int, input().split())
# 用列表推导式读取接下来的4行,strip()可选,用于去除每行末尾的换行符
strings = [input().strip() for _ in range(4)]

执行后,strings就会是包含A、B、C、D的列表,顺序和输入完全一致。

方法2:一次性读取所有行(更灵活)

如果担心输入里有空行或者行数不确定,可以借助sys.stdin一次性读取所有内容:

import sys

# 读取所有行,过滤空行并去除每行的换行符
all_lines = [line.strip() for line in sys.stdin if line.strip()]
# 提取第一行的x和y
x, y = map(int, all_lines[0].split())
# 提取接下来的4行(索引1到4,左闭右开)
strings = all_lines[1:5]

场景2:从本地输入文件读取

如果你的数据是存放在本地文件里的,直接打开文件处理更稳妥:

# 用with语句自动管理文件打开/关闭,避免资源泄漏
with open('你的输入文件名.txt', 'r', encoding='utf-8') as f:
    # 读取所有行并处理换行符
    all_lines = [line.strip() for line in f]
    # 解析第一行的整数
    x, y = map(int, all_lines[0].split())
    # 提取后续4行
    strings = all_lines[1:5]

补充:为什么你的splitlines()不起作用?

因为input()只返回一行字符串,splitlines()是把这一行按换行符拆分,但第一行本身没有换行(除非你手动输入了),所以只会返回一个元素的列表,根本碰不到后面的行。要处理多行输入,要么多次调用input(),要么一次性读取全部内容。

内容的提问来源于stack exchange,提问作者Leth

火山引擎 最新活动