You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python打印顺序异常:控制台输出与代码顺序不符的原因排查

控制台输出顺序异常的原因与解决办法

这不是内存问题,根源是标准输出缓冲区的延迟刷新。

Python的print()函数默认使用行缓冲机制,在某些终端环境(比如Windows命令提示符、部分IDE内置终端)中,输出内容会先暂存到缓冲区,不会立刻显示到控制台。当程序执行到input()函数时,input()的提示信息会直接输出(部分环境中input会强制刷新自身输出),导致原本应该先显示的game_intro内容被滞后呈现。

解决办法:

  1. 给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()
    
  2. 手动刷新标准输出缓冲区
    导入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 06:40:20