从昨天到现在,一直在研究这个看起来超级简单的时钟。界面非常简洁大方。

虽然是简单,可是这个对齐的问题还是把我整得一塌糊涂。谁叫作者不解释清楚的。

参考:http://bbs.fishc.com/thread-77638-1-1.html

接下来,我们一步步解决。

----------------------------------------------------------------------------------------------------------------

步骤1

注意。这里是换行打印才能打印出这种图形的,这个字典储存的是列表,为啥储存的是列表呢?因为待会

一个数字,我们是要分上中下三个部分打印的。

这里的元素要尽可能对齐,因为这个程序最麻烦的就是要整齐的输出。第一个/位置0元素的笔画统一居中。

以0为例,位置0(一横)除了1和4之外,在其它数字都是给包围起来的,所以两边的空格其实是留给竖的!!!

 lcd = {
0: [" _ ", "| |", "|_|"],
1: [" ", " |", " |"],
2: [" _ ", " _|", "|_ "],
3: [" _ ", " _|", " _|"],
4: [" ", "|_|", " |"],
5: [" _ ", "|_ ", " _|"],
6: [" _ ", "|_ ", "|_|"],
7: [" _ ", " |", " |"],
8: [" _ ", "|_|", "|_|"],
9: [" _ ", "|_|", " _|"]
} for num in lcd:
for i in lcd[num]:
print i

如果输出的是这种整整齐齐的数字的话(代码是纵向输出的),说明我们千辛万苦输入的列表元素是正确的。

步骤2

    接上面的代码,完整版在下面。

 # coding: utf-8                                                             

 import time

 # 分别把时,分,秒,拆分成上中下三个部分并
# 分别存储到一个空列表中(empty) def num2lcd(time):
et = ["", "", ""]
shiwei = time / 10
gewei = time % 10 for i in range(0, 3):
et[i] = lcd[shiwei][i] + lcd[gewei][i] return et # time.localtime()是输出当前日期的元组
# t.tm_hour是时,t.tm_min是分钟
# 这个函数最关键的部分是把之前分开的时,
# 分,秒的列表元素集合到一个列表中,最后统一打印出来。 def clock():
t = time.localtime()
h = num2lcd(t.tm_hour)
m = num2lcd(t.tm_min)
s = num2lcd(t.tm_sec) output = [h[0] + m[0] + s[0], h[1] + m[1] + s[1], h[2] + m[2] + s[2]]
return output

注意,这里的时间显示能否对齐完全取决于lcd字典是否对齐,每个值前面和后面的空格数量一定要控制好

---------------------------------------------------------------------------------------------------------------------------

 # coding: utf-8                                                                                   2016/12/8

 import os, time

 # 这里在上面的基础上,每个列表的元素后面加
# 多一个空格,让数字之间显示更美观 lcd = {
0: [" _ ", "| | ", "|_| "],
1: [" ", " | ", " | "],
2: [" _ ", " _| ", "|_ "],
3: [" _ ", " _| ", " _| "],
4: [" ", "|_| ", " | "],
5: [" _ ", "|_ ", " _| "],
6: [" _ ", "|_ ", "|_| "],
7: [" _ ", " | ", " | "],
8: [" _ ", "|_| ", "|_| "],
9: [" _ ", "|_| ", " _| "],
} # 分别把时,分,秒,拆分成上中下三个部分并
# 分别存储到一个空列表中(empty) def num2lcd(time):
et = ["", "", ""]
shiwei = time / 10
gewei = time % 10 for i in range(0, 3):
et[i] = lcd[shiwei][i] + lcd[gewei][i] return et # time.localtime()是输出当前日期的元组
# t.tm_hour是时,t.tm_min是分钟
# 这个函数最关键的部分是把之前分开的时,
# 分,秒的列表元素集合到一个列表中,最后统一打印出来。 def clock():
t = time.localtime()
h = num2lcd(t.tm_hour)
m = num2lcd(t.tm_min)
s = num2lcd(t.tm_sec) output = [h[0] + " " + m[0] + " " + s[0], h[1] + "." + m[1] + "." + s[1], h[2] + "." + m[2] + "." + s[2]]
return output while True:
for i in clock():
print i
time.sleep(1)
os.system("cls")

时钟完整版

由于在时和分,分和秒之间加了冒号,而每个时h[0]和分m[0],分m[0]和秒s[0]之间距离是一定的,

由于冒号自身占用1个空格,所以后面的会变成这样。因此要在h[0]的m[0],m[0]和s[0]之间加上空格。

 output = [h[0] + " " + m[0] + " " + s[0], h[1] + "." + m[1] + "." + s[1], h[2] + "." + m[2] + "." + s[2]]

----------------------------------------------------------------------------------------------------------------------------

秒表的同理类似。这里就不再介绍了,直接附上代码。

# coding: utf-8

import os, sys, time

lcd = {
0: [" _ ", "| | ", "|_| "],
1: [" ", " | ", " | "],
2: [" _ ", " _| ", "|_ "],
3: [" _ ", " _| ", " _| "],
4: [" ", "|_| ", " | "],
5: [" _ ", "|_ ", " _| "],
6: [" _ ", "|_ ", "|_| "],
7: [" _ ", " | ", " | "],
8: [" _ ", "|_| ", "|_| "],
9: [" _ ", "|_| ", " _| "]
} def num2lcd(time):
et = ["", "", ""]
shiwei = time / 10
gewei = time % 10 for i in range(0, 3):
et[i] = lcd[shiwei][i] + lcd[gewei][i] return et def clock(minute, second):
m = num2lcd(minute)
s = num2lcd(second) output = [m[0] + " " + s[0], m[1] + "." + s[1], m[2] + "." + s[2]] return output sec = 0
while True:
sec += 1
m = sec / 60
s = sec % 60 for i in clock(m, s):
print i time.sleep(1)
os.system("cls")

一般来说,当需要输出时间时,用求余符号%来求出分和秒是比较简便的。或者大家也可

以看看下面这一种。是用for循环在1和60之间循环递增的。择自己喜欢的一种即可。

 # coding: utf-8

 import os, sys, time

 lcd = {
0: [" _ ", "| | ", "|_| "],
1: [" ", " | ", " | "],
2: [" _ ", " _| ", "|_ "],
3: [" _ ", " _| ", " _| "],
4: [" ", "|_| ", " | "],
5: [" _ ", "|_ ", " _| "],
6: [" _ ", "|_ ", "|_| "],
7: [" _ ", " | ", " | "],
8: [" _ ", "|_| ", "|_| "],
9: [" _ ", "|_| ", " _| "]
} def num2lcd(time):
et = ["", "", ""]
shiwei = time / 10
gewei = time % 10 for i in range(0, 3):
et[i] = lcd[shiwei][i] + lcd[gewei][i] return et def clock(minute, second):
m = num2lcd(minute)
s = num2lcd(second) output = [m[0] + " " + s[0], m[1] + "." + s[1], m[2] + "." + s[2]] return output minute = 0
while True:
for sec in range(1, 61):
if sec == 60:
sec = 0 # 记得到了第60秒时秒要清零哦
minute += 1 # 同时分钟要 +1 for i in clock(minute, sec):
print i time.sleep(1)
os.system("cls")

lcd秒表

【Time系列五】个性时钟与秒表升级版的更多相关文章

  1. Keil MDK STM32系列(五) 使用STM32CubeMX创建项目基础结构

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  2. CSS 魔法系列:纯 CSS 绘制各种图形《系列五》

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  3. Netty4.x中文教程系列(五)编解码器Codec

    Netty4.x中文教程系列(五)编解码器Codec 上一篇文章详细解释了ChannelHandler的相关构架设计,版本和设计逻辑变更等等. 这篇文章主要在于讲述Handler里面的Codec,也就 ...

  4. WCF编程系列(五)元数据

    WCF编程系列(五)元数据   示例一中我们使用了scvutil命令自动生成了服务的客户端代理类: svcutil http://localhost:8000/?wsdl /o:FirstServic ...

  5. JVM系列五:JVM监测&工具

    JVM系列五:JVM监测&工具[整理中]  http://www.cnblogs.com/redcreen/archive/2011/05/09/2040977.html 前几篇篇文章介绍了介 ...

  6. SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

    原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...

  7. VSTO之旅系列(五):创建Outlook解决方案

    原文:VSTO之旅系列(五):创建Outlook解决方案 本专题概要 引言 Outlook对象模型 自定义Outlook窗体 小结 一.引言 在上一个专题中,为大家简单介绍了下如何创建Word解决方案 ...

  8. 系列五AnkhSvn

    原文:系列五AnkhSvn AnkhSvn介绍 AnkhSVN是一款在VS中管理Subversion的插件,您可以在VS中轻松的提交.更新.添加文件,而不用在命令行或资源管理器中提交.而且该插件属于开 ...

  9. java多线程系列(五)---synchronized ReentrantLock volatile Atomic 原理分析

    java多线程系列(五)---synchronized ReentrantLock volatile Atomic 原理分析 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java ...

随机推荐

  1. memcpy的实现

    memcpy的实现看起来貌似比较简单,但是也是有注意的地方! void *memcpy(void *dst, const void *src, size_t size) { //check argum ...

  2. ASP.NET MVC 使用MSBuild生成的几个注意事项

    做新项目,当时参考NopCommerce的结构,后台Nop.Admin是一个独立的Area Web Site,但部署的时候发现,使用一键发布,Admin Area会丢失. 研究了下NopCommerc ...

  3. bios和dos中断

    1.字符功能调用类(Character-Oriented Function)01H.07H和08H —从标准输入设备输入字符02H —字符输出03H —辅助设备的输入04H —辅助设备的输出05H — ...

  4. 安装升级System.Web.Optimization.dll

    今天在使用backload时,VS提示solution所引用的System.Web.Optimization.dll 版本低,编译不过,于是便删掉,从新添加引用,悲剧的是在添加引用窗口中没找到,在Nu ...

  5. Leetcode: 06/01

    今天完成了三道题目,总结一下: 1: Length of last word(细节实现题) 此题有一些细节需要注意(比如 “a_ _” 最后一个单词是a, 而不是遇到空格就直接算成没有),别的基本就是 ...

  6. UNIX系统接口

    UNIX系统接口 8.1 文件描述符 UNIX操作系统中,所有的外围设备(包括键盘和显示器)都被看作是文件系统中的文件.系统通过文件描述符来标识文件:标准输入为0,标准输出为1,标准错误为2. 当程序 ...

  7. js中的AMD规范

    回首萧瑟,残月挂角,孤草弄影. 看了一下上一篇随笔的日期,距离上一篇日志又过去了许久.在这段时间中,我尽全力去拯救那间便利店,可惜到最后依然失败,这一次是所有的出路全部没有了,我也做了所有的努力.闲下 ...

  8. IceMx.Mvc 我的js MVC 框架 三、动手来写一个评论模块儿

    介绍 本人菜鸟,一些自己的浅薄见解,望各位大神指正. 本框架有以下优点 1.简单(调用简单.实现简单.不过度设计) 2.视图.控制器.模型分离(分离对于维护十分有必要) 3.组件化(每一个mvc模块儿 ...

  9. urllib2 源码小剖

    urllib2 源码小剖 2013-08-25 23:38 by 捣乱小子, 272 阅读, 0 评论, 收藏, 编辑 两篇小剖已经完成: urllib 源码小剖 urllib2 源码小剖 urlli ...

  10. WINDOWS下安装PHP7出现PHP-CGI无法启动

    事情经过:下载PHP 7.0 然后运行,发现php-cgi一直挂掉.启动不起来.我直接到文件夹下启动PHP-CGI 启动, 失败,报错提示:缺失vcruntime140.dll.当时心中暗暗一笑,当年 ...