Python打印顺序异常:控制台输出与代码顺序不符的原因排查
控制台输出顺序异常的原因与解决办法
这不是内存问题,根源是标准输出缓冲区的延迟刷新。
Python的print()函数默认使用行缓冲机制,在某些终端环境(比如Windows命令提示符、部分IDE内置终端)中,输出内容会先暂存到缓冲区,不会立刻显示到控制台。当程序执行到input()函数时,input()的提示信息会直接输出(部分环境中input会强制刷新自身输出),导致原本应该先显示的game_intro内容被滞后呈现。
解决办法:
给print添加flush参数强制刷新
修改game_intro里的print语句,加入flush=True参数,让输出直接写入控制台:mylist = [0, 1, 2] def game_intro(): print("Hello! Welcome to the game!\n", flush=True) print(f"Here is the current list:\n{mylist}", flush=True) def input_check(): guess = input("Pick a number to replace: ") return guess # 补充返回值,否则guess变量会为None game_intro() guess = input_check()手动刷新标准输出缓冲区
导入sys模块,在调用input_check前主动刷新缓冲区:import sys mylist = [0, 1, 2] def game_intro(): print("Hello! Welcome to the game!\n") print(f"Here is the current list:\n{mylist}") def input_check(): guess = input("Pick a number to replace: ") return guess game_intro() sys.stdout.flush() guess = input_check()
另外注意:你的input_check函数没有返回值,执行guess = input_check()后guess会是None,如果需要获取用户输入的内容,记得在函数里添加return guess语句。
内容的提问来源于stack exchange,提问作者Herlan Rocha
相关产品推荐
相关产品推荐

