编辑代码

import sys
import time

def getch(timeout=None):
    """获取单个字符输入,支持超时返回None(跨平台版)"""
    try:
        # Windows系统实现
        import msvcrt
        if timeout is None:
            return msvcrt.getch().decode('utf-8')
        else:
            start_time = time.time()
            while True:
                if msvcrt.kbhit():
                    return msvcrt.getch().decode('utf-8')
                elapsed = time.time() - start_time
                if elapsed >= timeout:
                    return None
                time.sleep(min(timeout - elapsed, 0.1))
    except ImportError:
        # Unix-like系统实现
        import tty
        import termios
        import select
        fd = sys.stdin.fileno()
        old_settings = termios.tcgetattr(fd)
        try:
            tty.setcbreak(fd)
            if timeout is not None:
                rlist, _, _ = select.select([sys.stdin], [], [], timeout)
                return sys.stdin.read(1) if rlist else None
            else:
                return sys.stdin.read(1)
        finally:
            termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    except Exception as e:
        print(f"错误: {e}")
        return None

# 使用示例
print("请在三秒内按下任意键: ")
result = getch(timeout=3)
print(f"\n结果: {result if result else '超时未输入!'}")