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
相关产品推荐
相关产品推荐

