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

Python实现按下任意键终止锯齿形循环的方法

实现按任意键终止锯齿形图案循环

以下提供两种可行方案,分别适用于跨平台场景和依赖系统原生模块的场景:

方案一:使用跨平台库pynput(推荐)

该方案无需区分操作系统,只需先安装第三方库pynput:

pip install pynput

修改后的代码如下:

from pynput import keyboard
import time

stop_flag = False

def on_press(key):
    global stop_flag
    stop_flag = True
    return False

# 启动键盘监听线程
listener = keyboard.Listener(on_press=on_press)
listener.start()

while not stop_flag:
    print("*****")
    print(" *****")
    print("  *****")
    print("    *****")
    print("     *****")
    print("   *****")
    print("  *****")
    print(" *****")
    print(" *****")
    print("*****")
    time.sleep(0.5)  # 控制输出频率,避免刷屏

listener.stop()

方案二:依赖系统原生模块(无需额外安装库)

Windows系统

利用msvcrt模块实现非阻塞按键检测:

import msvcrt
import time

while True:
    print("*****")
    print(" *****")
    print("  *****")
    print("    *****")
    print("     *****")
    print("   *****")
    print("  *****")
    print(" *****")
    print(" *****")
    print("*****")
    time.sleep(0.5)
    if msvcrt.kbhit():
        msvcrt.getch()  # 读取按键,避免后续阻塞
        break

Linux/macOS系统

通过修改终端属性实现非阻塞按键检测:

import sys
import termios
import tty
import time

def is_key_pressed():
    old_settings = termios.tcgetattr(sys.stdin)
    try:
        tty.setcbreak(sys.stdin.fileno())
        return sys.stdin.read(1) is not None
    finally:
        termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)

while True:
    print("*****")
    print(" *****")
    print("  *****")
    print("    *****")
    print("     *****")
    print("   *****")
    print("  *****")
    print(" *****")
    print(" *****")
    print("*****")
    time.sleep(0.5)
    if is_key_pressed():
        break

注意事项

  • 代码中的time.sleep(0.5)用于控制图案输出的间隔,可根据需求调整数值
  • 方案一的pynput库兼容性更强,无需针对不同系统修改代码

内容的提问来源于stack exchange,提问作者Mazen AboBakr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:56:06