IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Python Command Line Clock(Python命令行时钟)

    ISnail_发表于 2013-03-29 07:38:48
    love 0

    今天在网上看到一个大神做的一个时钟,完全python完成,使用了大量的数学计算。原理是生成一个表盘,然后生成3个指针,然后程序停止1秒,再继续只上述代码,不过会先clear一下。

    下面是代码


    #encoding:utf8
    """
    咱这把两个字符当成一个"像素",可是控制台的"宽度"太有限了,一行只能容纳几十个这样的"像素",
    控制台宽度直接关系到图像分辨率,宽度越小会导致"图像"失真的越厉害
    曾经考虑用圆的方程,不过效果不咋地...
    注_ 圆的方程 : (x-a)**2+(y-b)**2=r**2 ; 圆心O(a,b),半径r
    """
    from sys import platform
    from os import system
    from time import sleep, localtime
    from math import sin, cos, pi
    clsCmd = {'win32': 'cls', 'linux2': 'clear', 'linux': 'clear'}[platform] # 不同平台下的控制台清屏命令
    infill = ' ' * 2 # 背景填充字符
    width = 39 # 点阵宽度(这里将创建一个39×39的点阵)
    O = int((width - 1) / 2) # 圆心
    r = width / 2.0 - 1 # 半径
    drad = pi / 180 # 1°=pi/180 rad
    while True:
    matrix = [[infill for col in range(width)] for row in range(width)]
    now = localtime()
    h_d = now.tm_hour * 30 # 时针与12点钟方向的夹角
    m_d = now.tm_min * 6 # 分针与…
    s_d = now.tm_sec * 6 # 秒针与…
    # 创建表盘:
    for deg in range(360):
    row = int(cos(deg * drad) * r + O)
    col = int(sin(deg * drad) * r + O)
    matrix[row][col] = str((deg + 14) // 30).zfill(2)
    # 创建时针:
    for Hr in range(int(r - 7)):
    row = int(cos((h_d + m_d / 12) * drad) * Hr + O)
    col = int(sin((h_d + m_d / 12) * drad) * Hr + O)
    matrix[row][col] = str(now.tm_hour).zfill(2)
    # 创建分针:
    for Mr in range(int(r - 5)):
    row = int(cos((m_d + s_d / 60) * drad) * Mr + O)
    col = int(sin((m_d + s_d / 60) * drad) * Mr + O)
    matrix[row][col] = str(now.tm_min).zfill(2)
    # 创建秒针:
    for Sr in range(int(r - 1)):
    row = int(cos(s_d * drad) * Sr + O)
    col = int(sin(s_d * drad) * Sr + O)
    matrix[row][col] = str(now.tm_sec).zfill(2)
    # 点缀表盘中心:
    matrix[O][O] = '{}'
    # 最后清屏输出:
    system(clsCmd)
    print('\n'.join(''.join(row) for row in reversed(matrix)))
    sleep(1)

    下载链接
    clock



沪ICP备19023445号-2号
友情链接