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

如何定时重复执行代码且不清屏,仅在原位更新NHL实时比分数据

NHL实时比分原地更新实现方案

核心逻辑是利用终端内置的光标控制能力,不需要全量清屏,仅覆盖对应比分位置的内容即可,以下是两种常用实现方式(适配你使用的Python开发环境):

1. 轻量化实现(无第三方依赖)

通过ANSI转义序列控制光标移动,适合简单的比分展示场景,代码示例:
首先添加转义序列常量定义,Windows系统需要额外加一行激活ANSI支持:

import time
import requests
import os

# Windows系统激活终端ANSI支持
os.system('')

# 终端控制转义符
CURSOR_UP = '\033[F'  # 光标上移一行
CLEAR_LINE = '\033[K' # 清除当前行光标后所有内容

业务逻辑示例:

# 首次全量输出界面框架
print("_" * 46)
print("Buffalo Sabres 0")
print("Edmonton Oilers 0")
print("_" * 46)
print("Toronto Maple Leafs 0")
print("Calgary Flames 0")
print("_" * 46)
print("Carolina Hurricanes 0")
print("Philadelphia Flyers 0")
print("_" * 46)

while True:
    # 拉取NHL API数据
    resp = requests.get("你的API请求地址")
    resp.raise_for_status()
    jsonResponse = resp.json()

    # 读取各场比赛主客场进球数,以下为示例,可替换为你实际的多比赛数据读取逻辑
    game1_home = jsonResponse["liveData"]['linescore']['teams']['home']['goals']
    game1_away = jsonResponse["liveData"]['linescore']['teams']['away']['goals']
    # game2_home、game2_away等同理读取

    # 光标回退到第一场比赛的主队行位置,总共需要上移9行(对应首次输出的最后9行内容)
    print(CURSOR_UP * 9, end='')

    # 逐行更新内容,仅覆盖原有内容,不会产生新行
    print(f"{CLEAR_LINE}Buffalo Sabres {game1_home}")
    print(f"{CLEAR_LINE}Edmonton Oilers {game1_away}")
    print(f"{CLEAR_LINE}" + "_" * 46)
    # 第二、三场比赛更新逻辑同上,替换对应球队名称和比分即可

    time.sleep(3)

注意事项

  • 动态比赛数量场景可先将所有比赛数据存入列表,首次输出时统计总行数,更新时对应调整光标上移行数即可
  • 部分极简终端(比如Windows旧版cmd)如果不支持ANSI序列,可替换为第二种实现方案

2. 复杂场景稳定实现

如果后续需要新增控球率、罚时、球员数据等更多展示内容,推荐使用Python标准库curses,可直接指定坐标输出内容,无需手动计算光标位置:

import curses
import time
import requests

def run(stdscr):
    # 隐藏终端光标
    curses.curs_set(0)
    while True:
        # API数据拉取逻辑略
        # 直接指定行列坐标输出内容,参数为(行号, 列号, 输出内容)
        stdscr.addstr(0, 0, "_" * 46)
        stdscr.addstr(1, 0, "Buffalo Sabres")
        stdscr.addstr(1, 20, str(game1_home))
        stdscr.addstr(2, 0, "Edmonton Oilers")
        stdscr.addstr(2, 20, str(game1_away))
        # 其余内容输出逻辑同上
        stdscr.refresh()
        time.sleep(3)

if __name__ == "__main__":
    curses.wrapper(run)

该方案不会出现界面闪烁问题,所有内容更新仅覆盖指定坐标位置,稳定性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:45:05