如何在不输入空行的情况下读取未知行数的输入?
读取未知行数输入的Python解决方案
要读取未知行数的输入且无需空行终止,核心是捕获input()函数在输入结束时抛出的EOFError异常,以此来终止循环。
修正后的代码
a = [] b = [] while True: try: # 读取一行并去除首尾空白 line = input().strip() # 可选:跳过空行(如果输入中可能存在空行的话) if not line: continue # 分割成两部分 parts = line.split() # 将对应数据存入列表 a.append(parts[0]) b.append(int(parts[1])) except EOFError: # 输入结束,退出循环 break # 验证结果(可选) print("存储字符的列表a:", a) print("存储数字的列表b:", b)
原代码的问题说明
- 逻辑判断错误:
if l[0] == ' '完全不成立,因为split()会自动分割空格,分割后的列表元素不可能是单个空格,而且第一行输入就会触发else分支直接跳出循环,根本无法读取数据。 - 未处理输入结束的情况:当输入全部读完时,
input()会直接抛出EOFError,原代码没有捕获这个异常,会直接报错终止程序。
使用方式
- 如果是从终端输入,输入完所有内容后,按
Ctrl+D(Unix/Linux/macOS)或Ctrl+Z(Windows)即可结束输入。 - 如果是从文件重定向输入(比如
python your_script.py < input.txt),程序会自动读取完文件所有行后终止。
内容的提问来源于stack exchange,提问作者pythonno
相关产品推荐
相关产品推荐

