TCS 2023 Python实操题:EOFError报错排查与代码修复
TCS 2023 Python实操题:EOFError排查与修复
问题背景
代码通过City类、CovBedsAnalysis类实现新冠床位统计分析功能,但运行时触发EOFError,提示读取行时遇到文件结束。
核心原因
这类报错通常源于输入读取逻辑未处理输入流耗尽的情况:
- 使用
input()或sys.stdin.readline()循环读取时,输入内容全部读完后仍尝试继续读取 - 读取次数与实际输入行数不匹配(比如测试输入先给出总行数,但代码读取次数超过该数值)
修复方案
方案1:捕获EOFError异常终止循环
适用于不确定输入行数的场景,直接捕获异常结束读取流程:
try: while True: line = input().strip() # 调用City/CovBedsAnalysis类的相关处理逻辑 except EOFError: # 输入结束,正常退出 pass
方案2:通过sys.stdin迭代读取
利用Python文件对象的迭代特性,自动在输入结束时停止循环:
import sys for line in sys.stdin: line = line.strip() if not line: continue # 跳过空行 # 调用City/CovBedsAnalysis类的相关处理逻辑
方案3:按指定行数读取
如果测试输入开头给出数据总行数,严格按行数读取,避免超出输入范围:
# 假设输入第一行为数据总行数 total_lines = int(input()) for _ in range(total_lines): line = input().strip() # 调用City/CovBedsAnalysis类的相关处理逻辑
验证步骤
- 确认测试输入格式与代码读取逻辑匹配(比如是否有总行数、每行数据格式是否符合预期)
- 运行修复后的代码,对比预期输出确认床位统计分析功能正常
内容的提问来源于stack exchange,提问作者krithika sasi
相关产品推荐
相关产品推荐

