You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python 3中单行接收多个输入?含未知每行输入数量场景

在Python 3中实现单行接收多个输入及动态行数处理

嘿,我来帮你搞定这个问题!在Python 3里处理单行多输入和动态行数的输入其实挺简单的,我分两种场景给你讲清楚:

基础场景:单行接收多个输入

最常用的方法就是借助input()获取整行输入,再用split()方法把输入按空格分割成字符串列表——不管输入里有多少个空格,它都能自动处理。如果需要把这些输入转成整数(或者其他数据类型),用map()函数就行。

举个例子,如果你输入一行5 8 2 9,可以这么写:

# 获取单行输入并转成整数列表
nums = list(map(int, input().split()))
print(nums)  # 输出: [5, 8, 2, 9]

要是你需要把输入分别赋值给变量(比如两个数),直接拆包就行:

a, b = map(int, input().split())
print(a, b)  # 输入"3 7"的话,输出3 7

不过要注意,如果输入的数量和变量数量不匹配会报错,所以不确定输入数量的时候,用列表存储更稳妥。

特定场景:首行指定行数,每行输入数量不确定

你提到的示例输入3 1 2 3 4 3 8 9 6 3,我猜是两种情况:一种是先输入行数,再逐行输入任意数量的内容;另一种是所有内容挤在一行里。我分别给你讲处理方法:

情况1:交互式逐行输入

如果是先输入行数,再依次输入每行的内容(每行数量随便),可以这么写:

# 先获取要输入的行数
n = int(input())
# 用列表存储所有行的数据
all_data = []
for _ in range(n):
    # 每行接收任意数量的输入,转成整数列表
    line_nums = list(map(int, input().split()))
    all_data.append(line_nums)

# 打印结果看看
print("所有行的数据:")
for line in all_data:
    print(line)

测试的时候你可以这么输入:

3
1 2 3
4 3
8 9 6 3

输出就是:

所有行的数据:
[1, 2, 3]
[4, 3]
[8, 9, 6, 3]

情况2:所有输入在同一行

如果所有内容都挤在一行里(比如你给的示例3 1 2 3 4 3 8 9 6 3),这里要注意:第一个数字是行数,但剩下的数字怎么划分成对应行数的内容其实是有歧义的——除非你有明确的划分规则(比如每行的第一个数字是该行的元素个数)。假设你是想把第一个数字作为行数,剩下的数字按顺序分成n行(每行至少一个元素),可以这么处理(这里假设每行至少一个元素,按平均分配,多的放在最后一行):

# 读取整行并转成整数列表
all_nums = list(map(int, input().split()))
# 第一个元素是行数
n = all_nums[0]
# 剩下的是要分配的数据
data = all_nums[1:]
# 计算每行至少有多少个元素
avg = len(data) // n
# 剩下的元素个数
remainder = len(data) % n

all_data = []
start = 0
for i in range(n):
    # 前remainder行多一个元素
    end = start + avg + (1 if i < remainder else 0)
    all_data.append(data[start:end])
    start = end

print(all_data)

输入3 1 2 3 4 3 8 9 6 3的话,输出就是:

[[1, 2, 3], [4, 3, 8], [9, 6, 3]]

不过如果你的实际需求是把后续的内容作为单独的行(比如原本是多行输入被合并成了一行),那可能需要你补充划分规则,不然程序没法自动判断每行的边界哦。

另外,如果你的输入是来自文件或者是多行粘贴的内容,用sys.stdin读取会更稳妥,避免input()只能读取一行的问题:

import sys

# 读取所有非空白的输入行
lines = [line.strip() for line in sys.stdin if line.strip()]
# 第一行是行数
n = int(lines[0])
# 提取后面n行的数据
all_data = []
for line in lines[1:n+1]:
    all_data.append(list(map(int, line.split())))

print(all_data)

这样不管是手动输入多行还是粘贴内容,都能正确处理啦。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:42:56