如何修改sys.stdin.readline()实现一次性读取全部输入数据
一次性读取输入的代码修改方案
你可以通过sys.stdin.read()一次性读取全部标准输入内容,再按行拆分处理,无需逐行输入,调试时直接粘贴整段输入即可,修改后的代码如下:
import sys def IsBinarySearchTree(tree): # 此处保留你原本的二叉搜索树判断逻辑即可 pass def main(): # 一次性读取所有输入,按行拆分,自动过滤空行避免格式干扰 all_input = sys.stdin.read() all_lines = [line.strip() for line in all_input.splitlines() if line.strip()] nodes = int(all_lines[0]) tree = [] for i in range(nodes): tree.append(list(map(int, all_lines[i+1].split()))) if IsBinarySearchTree(tree): print("CORRECT") else: print("INCORRECT") if __name__ == "__main__": main()
逻辑说明
sys.stdin.read()会读取标准输入的全部内容直到EOF结束,调试时粘贴完所有输入后,按Ctrl+D(Windows系统按Ctrl+Z后回车)即可触发输入结束- 整体逻辑和你原有的逐行读取逻辑完全兼容,不需要修改二叉搜索树判断的核心代码
- 额外增加了空行过滤逻辑,输入前后的多余换行、空行不会影响代码运行
本地调试优化技巧
如果是本地IDE调试,你还可以直接把测试用例写死在代码里,完全不需要手动输入:
# 替换原来的all_input = sys.stdin.read() 行即可 test_input = """3 1 1 2 2 -1 -1 3 -1 -1 """ all_lines = [line.strip() for line in test_input.splitlines() if line.strip()]
调试完成后改回读取sys.stdin即可提交,不需要调整其他逻辑。
内容的提问来源于stack exchange,提问作者jabberwoo
相关产品推荐
相关产品推荐

