Python如何未知行数循环输入

Python如何未知行数循环输入

作者:William Gu发布时间:2026-01-14阅读时长:0 分钟阅读次数:7

用户关注问题

Q
如何在Python中读取不确定数量的输入行?

我有一个场景,输入的行数无法提前确定,如何用Python代码逐行读取这些输入?

A

使用循环结合异常处理实现未知行数的输入读取

可以使用一个无限循环,比如while True,在循环内调用input()读取每一行。当输入结束时,input()会触发EOFError异常,捕获这个异常后跳出循环。这种方式可以实现读取任意多行输入,直到输入结束。示例代码如下:

try:
while True:
line = input()
# 处理line
except EOFError:
pass

Q
如何使用sys.stdin读取多行数据?

在Python中,有没有比input()更适合处理未知行数输入的方法?

A

采用sys.stdin.readlines()或遍历sys.stdin

可以导入sys模块,利用sys.stdin读取所有输入内容。使用sys.stdin.readlines()会返回一个包含所有输入行的列表,也可以直接遍历sys.stdin实现逐行处理。示例代码:

import sys
for line in sys.stdin:
# 处理line

这种方法适合从文件重定向输入或管道传入多行内容。

Q
Python中如何判断输入何时结束?

在不确定输入行数的情况下,程序怎样知道用户已经不再输入?

A

利用EOF信号表示输入结束

Python中的input()函数读取输入时,如果接收到EOF(End Of File,文件结尾)信号,就会抛出EOFError异常。命令行下一般通过按Ctrl+D(Unix/Linux/macOS)或Ctrl+Z再回车(Windows)发出EOF信号来表示输入结束。捕获该异常或判断输入结束状态,即可终止输入循环。