栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

练习:数字时钟(Python 自定义类)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

练习:数字时钟(Python 自定义类)


Python 官网: python 前沿。可惜是英文原版。所以,我要练习英文阅读。類類" rel="noopener noreferrer">https://www.python.org/


  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……

  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室

  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚





练 习
数字时钟
(Python 自定义类)




        目录


  1、自定义类 LocaltimeShow(当前时间显示)   2、实现时钟显示有两种方式   3、本练习完整源码
回首页

  看到大佬的自定义类 Clock(电子时钟)——点击链接打开大佬博文,近文末有电子时钟完整源码——,才看到自己以前的练习代码《当前时间显示器(代码屏显)》、《python中文日期时间显示》有多丑。
  赶紧滴,跟着大佬学一个。朗朗


自定义类 LocaltimeShow(当前时间显示):

class LocaltimeShow:
    ''' 显示当前时间 '''
    
    def __init__(self):
        '''
        初始化变量:
        self.hour 小时数
        self.minute 分钟数
        self.sec 秒数
        '''
        
        from time import localtime # 加载当前时间获取方法。
        t = localtime() # 获取当前时间数组。
        self.sec = t[5] # 取秒。
        self.minute, self.hour = t[4], t[3]%12 # 取分、时(小时数,24小时显示直接取,12小时显示模12)。


    def run(self):
        ''' 时钟走字 '''
        
        self.sec += 1
        if not self.sec%60: # 分钟数进位。
            self.sec = 0
            self.minute += 1
            if not self.minute%60: # 小时数进位。
                self.minute = 0
                self.hour += 1
                if not self.hour%12: # 12小时显示模12。
                    self.hour = 0
                

    def show(self):
        '''
         返回时钟显示格式化字符串。
         (用自定义工具模块 color(),
         返回绿色字符控制的格式化时间字符串。)
         '''
        return f" {self.hour:0>2}:{self.minute:0>2}:{self.sec:0>2} "

  此自定义 LacaltimeShow 类,有三个属性,self.hour(时)、self.minute(分)、self.sec(秒),两个方法 run(时钟走字)、show(当前时钟字符格式化字符串返回)。类属性时、分、秒从 time 模块的 localtime() 方法获取的当前时间数组中获取。


回首页


实现时钟显示有两种方式:

一、while 循环一秒一次获取当前时间数组并从中读取时、分、秒,实现当前时钟显示。

if __name__ == '__main__':
    from time import sleep # 加载时间模块 sleep() 方法。
    
    while True: # 一直循环。
        t = LocaltimeShow() # 自定义类实例。
        print(color(t.show(),'f_green').center(59, '-'), end='r') # end='r',回车不换行,时钟字符始终在同一位置刷新。
        sleep(1) # 一秒刷新显示一次。
代码运行效果

二、获取当前时间数组并从中读取时、分、秒,while 循环一秒一次调用自定义类 run(时钟走字) 方法走字,实现当前时钟显示。

if __name__ == '__main__':
    from time import sleep # 加载时间模块 sleep() 方法。
    t = LocaltimeShow() # 自定义类实例。

    while True: # 一直循环。
        print(color(t.show(),'f_green').center(59, '-'), end='r') # end='r',回车不换行,时钟字符始终在同一位置刷新。
        sleep(1) # 暂停1秒。
        t.run() # 调用时钟走字方法走字。
    
代码运行效果



  值得注意的是:经过试炼,发现用自定义类的run方法实现时钟显示代码运行所消耗的时间累积会造成时间误差,运行代码时间越长误差越大。“每次打印都从当前时间数组取值”的实现方式相对较好,每秒都在修正时钟显示误差(每次打印)。


回首页

本练习完整源码
(完整代码为最后完成调试后的最终代码,前面贴出的代码是调试出功能就上传的,可能后来已作优化。完整代码中的对应部分,可能比前面贴出的“ 高级 ”哦。这是个人记笔记定CSDN博文的习惯所致,敬请谅解。) 我的解题思路,已融入代码注释 ,博文中就不再赘述。(如果从语句注释不能清楚作用,请评论区留言指教和探讨。欄)
#!/sur/bin/nve python
# -*-  coding:utf8  -*-
#qpy:console
from mypythontools import TimeSpan, 
wait, color, cut_line
print (f"nn{color(' 试炼数据正在制造…… ','f_green').center(49, '-')}")


class LocaltimeShow:
    ''' 显示当前时间 '''
    
    def __init__(self):
        '''
        初始化变量:
        self.hour 小时数
        self.minute 分钟数
        self.sec 秒数
        '''
        
        from time import localtime # 加载当前时间获取方法。
        t = localtime() # 获取当前时间数组。
        self.sec = t[5] # 取秒。
        self.minute, self.hour = t[4], t[3]%12 # 取分、时(小时数,24小时显示直接取,12小时显示模12)。


    def run(self):
        ''' 时钟走字 '''
        
        self.sec += 1
        if not self.sec%60: # 分钟数进位。
            self.sec = 0
            self.minute += 1
            if not self.minute%60: # 小时数进位。
                self.minute = 0
                self.hour += 1
                if not self.hour%12: # 12小时显示模12。
                    self.hour = 0
                

    def show(self):
        '''
         返回时钟显示格式化字符串。
         (用自定义工具模块 color(),
         返回绿色字符控制的格式化时间字符串。)
         '''
        return f" {self.hour:0>2}:{self.minute:0>2}:{self.sec:0>2} "


if __name__ == '__main__':
    from time import sleep
    
    # 实现方式一
    while True:
        t = LocaltimeShow() # 自定义类实例。
        print(color(t.show(),'f_green').center(59, '-'), end='r') # end='r',回车不换行,时钟字符始终在同一位置刷新。
        sleep(1) # 一秒刷新显示一次。

    # 实现方式二
    t = LocaltimeShow() # 自定义类实例。
    while True:
        print(color(t.show(),'f_green').center(59, '-'), end='r') # end='r',回车不换行,时钟字符始终在同一位置刷新。
        sleep(1) # 暂停1秒。
        t.run() # 调用时钟走字方法走字。



大佬博文(点击下面链接打开大佬博文,近文末有电子时钟完整源码):

  • 《Python基础篇:面向对象怎样炼成的》


我以前的丑代码博文笔记:

  • 《当前时间显示器(代码屏显)》
  • 《python中文日期时间显示》

回目录


My Up and Down: __上一篇:__ 练习:小炼二维数组

__下一篇:__ 

我的HOT博:
  • 练习:银行复利计算(用 for 循环解一道初中小题)(1040阅读)
  • pandas 数据类型之 DataFrame(1223阅读)
  • 班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)(2057阅读)
  • Python字符串居中显示(1394阅读)
  • 练习:求偶数和、阈值分割和求差( list 对象的两个基础小题)(1632阅读)
  • 用 pandas 解一道小题(1954阅读)
  • 可迭代对象和四个函数(1061阅读)
  • “快乐数”判断(1224阅读)
  • 罗马数字转换器(构造元素取模)(1923阅读)
  • Hot:罗马数字(转换器|罗生成器)(3371阅读)
  • Hot:让QQ群昵称色变的代码(24954阅读)
  • Hot:斐波那契数列(递归| for )(3923阅读)
  • 柱状图中最大矩形(1639阅读)
  • 排序数组元素的重复起止(1230阅读)
  • 电话拨号键盘字母组合(1335阅读)
  • 密码强度检测器(1779阅读)
  • 求列表平衡点(1804阅读)
  • Hot: 字符串统计(4169阅读)
  • Hot:尼姆游戏(聪明版首发)(3405阅读)尼姆游戏(优化版)(974阅读)
推荐条件 点阅破千

回目录


精品文章:
  • 好文力荐:《python 完全自学教程》齐伟书稿免费连载
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


回目录

Python 入门指南【Python 3.6.3】
好文力荐:
  • 全栈领域优质创作者——寒佬(还是国内某高校学生)好文:《非技术文—关于英语和如何正确的提问》,“英语”和“会提问”是学习的两大利器。

  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛

  • 靠谱程序员的好习惯


CSDN实用技巧博文:
  • 8个好用到爆的Python实用技巧
  • python忽略警告

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号