🐍「Python 终端彩色时钟」:彩虹渐变 + HSV 调色,30 行代码让命令行走起!

不需要 GUI,不需要第三方库------

1 个文件、30 行代码、0 依赖,

就能在终端里看到 实时跳动的彩虹时钟

还支持 12/24 小时制 随意切换!

复制即跑,改两行就能玩出更多花样!🎨

一、最终效果:先睹为快!

运行命令:

bash 复制代码
python terminal_clock.py --12

终端实时显示:

复制代码
🌈 12:34:56 PM
(每字符都在渐变,0.2 秒刷新一次)

二、核心思路(3 步)

  1. HSV → RGB:让颜色随时间流动(Hue 循环)
  2. 逐字符上色:每个字单独计算色相偏移 → 彩虹渐变
  3. 清屏 + 刷新 :用 os.system('clear||cls') 实现"动画帧"

三、完整源码(< 30 行)

python 复制代码
#!/usr/bin/env python3
import time, os, sys, datetime

def hsv_rgb(h, s, v):
    """HSV → RGB 0-255 简易实现"""
    c = v * s
    x = c * (1 - abs((h * 6) % 2 - 1))
    m = v - c
    r, g, b = [(c + m), (x + m), (m)], [(x + m), (c + m), (m)], [(m), (c + m), (x + m))][int(h * 6) % 6]
    return int(r * 255), int(g * 255), int(b * 255)

def rainbow_clock():
    while True:
        now = datetime.datetime.now()
        text = now.strftime("%I:%M:%S %p") if "--12" in sys.argv else now.strftime("%H:%M:%S")
        rainbow = "".join(f"\033[38;2;{r};{g};{b}m{c}\033[0m"
                          for i, c in enumerate(text)
                          for r, g, b in [hsv_rgb((i / len(text) + time.time() % 1), 1, 1)])
        os.system('clear||cls')
        print(f"\n{rainbow}\n{'按 Ctrl+C 退出':^20}")
        time.sleep(0.2)

if __name__ == "__main__":
    rainbow_clock()

四、运行方式

bash 复制代码
# 24 小时制
python terminal_clock.py

# 12 小时制(AM/PM)
python terminal_clock.py --12

五、可玩改装(3 分钟)

改装点 代码提示
心跳闪烁 time.sleep(0.5) 改大,加 if int(time.time()) % 2: 控制显隐
渐隐尾巴 清屏前打印 半透明空格 覆盖旧帧
加边框 print("═" * 20) 上下框线
改形状 text 换成 emoji 时钟 🕐🕑🕒

六、知识点速记(背它!)

**"HSV 循环色相,RGB 逐字符,清屏刷帧,终端动画成!"**🎵

相关推荐
WanderInk1 天前
刷新后点赞全变 0?别急着怪 Redis,这八成是 Long 被 JavaScript 偷偷“改号”了(一次线上复盘)
后端
吴佳浩1 天前
Python入门指南(七) - YOLO检测API进阶实战
人工智能·后端·python
廋到被风吹走1 天前
【Spring】常用注解分类整理
java·后端·spring
货拉拉技术1 天前
出海技术挑战——Lalamove智能告警降噪
人工智能·后端·监控
最贪吃的虎1 天前
Git: rebase vs merge
java·运维·git·后端·mysql
用户47949283569151 天前
给客户做私有化部署,我是如何优雅搞定 NPM 依赖管理的?
前端·后端·程序员
间彧1 天前
混沌工程在SpringBoot项目中的实践与应用
后端
隔壁阿布都1 天前
使用LangChain4j +Springboot 实现大模型与向量化数据库协同回答
人工智能·spring boot·后端