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

如何使用Python在控制台/终端实现动态扩散的菱形星号图案动画

菱形星号逐圈绘制动画实现方案

原代码问题排查

你遇到的清空控制台不生效、看不到逐圈绘制效果的核心原因有两个:

  • os.system("clear")仅适用于Linux/macOS系统,Windows系统下需要调用os.system("cls")才能完成清屏
  • 代码没有添加帧间隔,执行速度太快会直接跳转到最终渲染结果,看不到中间动画过程

修复后可运行代码

import os
import sys
import time
import numpy as np

def get_string(pattern, num):
    string = ""
    for i in range(num):
        for j in range(num):
            if pattern[i][j] == 0:
                string += "   "
            else:
                string += " * "
        string += "\n"
    return string

# 跨系统清屏函数
def clear_screen():
    os.system('cls' if os.name == 'nt' else 'clear')

num = 5
pattern = np.zeros((num, num))
loc = num // 2

# 第一帧:中心星号
pattern[loc, loc] = 1
string = get_string(pattern, num)
clear_screen()
sys.stdout.write(string)
sys.stdout.flush()
time.sleep(0.5)

# 逐圈向外绘制
for k in range(1, loc+1):
    for i in range(num):
        for j in range(num):
            eclu = abs(i - loc) + abs(j - loc)
            if eclu == k:
                pattern[i][j] = 1
    string = get_string(pattern, num)
    clear_screen()
    sys.stdout.write(string)
    sys.stdout.flush()
    time.sleep(0.5)

无系统调用清屏的替代方案

如果不想调用系统命令清屏,可以使用终端通用的ANSI转义序列实现清屏,替换上面的clear_screen函数即可,性能更流畅:

def clear_screen():
    # \033[2J 清屏,\033[H 移动光标到左上角
    sys.stdout.write("\033[2J\033[H")
    sys.stdout.flush()

该方案在大部分现代终端(Windows Terminal、PowerShell、macOS终端、Linux各终端)都可正常运行,老版本Windows cmd建议使用系统调用清屏方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:12:00