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

为什么Python脚本中if语句后的input()函数被忽略无法正常生效?

问题根因

你代码中enter_toggle()函数通过pynput模拟发送了回车键,这个按键事件会被运行脚本的终端捕获,写入标准输入缓冲区。当触发鼠标位置变化的if分支时,input()函数会优先读取缓冲区中已有的换行符,直接返回执行结果,不会阻塞等待用户手动输入,所以看起来就像被跳过了。

解决方案

方案1:调用input前清空标准输入缓冲区

改动最小,直接适配原有逻辑,适配全平台的代码如下:

# 先导入依赖模块
import sys
import os

# 新增清空输入缓冲区的函数
def clear_input_buffer():
    if os.name == 'nt':
        import msvcrt
        while msvcrt.kbhit():
            msvcrt.getch()
    else:
        import termios
        termios.tcflush(sys.stdin, termios.TCIOFLUSH)

# 修改原if分支逻辑
if start_position != end_position:
    clear_input_buffer()
    input("Press any key to continue ")

方案2:改用pynput键盘监听实现等待按键

完全绕开标准输入,不会和你模拟发送的按键冲突,稳定性更高,代码示例:

# 先导入依赖模块
from pynput.keyboard import Listener

# 新增等待任意按键的函数
def wait_for_any_key():
    def on_press(key):
        # 按下任意键就停止监听
        return False
    with Listener(on_press=on_press) as listener:
        listener.join()

# 修改原if分支逻辑
if start_position != end_position:
    print("Press any key to continue ")
    wait_for_any_key()

内容的提问来源于stack exchange,提问作者Kaloian Kozlev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:36:04