背景

今天在B站上看有关 Python 最火的一个教学视频,零基础入门学习 Python,这也是我们 Python基础刻意练习活动 的推荐视频教程。

在学习魔法方法的时候,有一节视频是制作一个简单的定时器,基本要求如下:

  • 定制一个计时器的类。
  • startstop方法代表启动计时和停止计时。
  • 假设计时器对象t1print(t1)和直接调用t1均显示结果。
  • 当计时器未启动或已经停止计时时,调用stop方法会给予温馨的提示。
  • 两个计时器对象可以进行相加:t1+t2
  • 只能使用提供的有限资源完成。

技术分析

Python 的time模块中,时间表现的格式主要有三种:

  • timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
  • struct_time时间元组,共有九个元素组。
  • format time格式化时间,用格式化的结构使时间更具可读性。包括自定义格式和固定格式。

获取时间戳

  • time.time()返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
import timeticks = time.time()
print('当前时间戳为:', ticks)  # 当前时间戳为: 1570793479.162907

获取当前时间元组

  • time.localtime([sec])格式化时间戳为本地的时间。 如果sec参数未输入,则以当前时间为转换标准。
import timelocaltime = time.localtime(time.time())
print("本地时间为 :", localtime)
# 本地时间为 : time.struct_time(tm_year=2019, tm_mon=10, tm_mday=11, tm_hour=19, tm_min=35, tm_sec=31, tm_wday=4, tm_yday=284, tm_isdst=0)
  • tm_year:4位数年
  • tm_mon:月
  • tm_mday:日
  • tm_hour:小时
  • tm_min:分钟
  • tm_sec:秒
  • tm_wday:一周的第几日,0到6 (0是周一)
  • tm_yday:一年的第几日
  • tm_isdst:夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1

获取格式化的时间

  • time.asctime([tupletime])接受时间元组并返回一个可读的形式。
import timet = time.localtime()
print("本地时间为 : %s " % time.asctime(t))
# 本地时间为 : Fri Oct 11 19:42:34 2019

格式化时间

  • time.strftime(format[,tupletime])接收以时间元组,并返回以可读字符串表示的当地时间,格式由format决定。
  • time.strptime(str,format='%a %b %d %H:%M:%S %Y')根据format的格式把一个时间字符串解析为时间元组。
  • time.mktime(tupletime)接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)。
import timeprint(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 2019-10-11 19:48:31
print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
# Fri Oct 11 19:48:31 2019
a = "Fri Oct 11 19:48:31 2019"
print(time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y")))
# 1570794511.0
  • %y 两位数的年份表示(00-99)
  • %Y 四位数的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月内中的一天(0-31)
  • %H 24小时制小时数(0-23)
  • %I 12小时制小时数(01-12)
  • %M 分钟数(00=59)
  • %S 秒(00-59)
  • %a 本地简化星期名称
  • %A 本地完整星期名称
  • %b 本地简化的月份名称
  • %B 本地完整的月份名称
  • %c 本地相应的日期表示和时间表示
  • %j 年内的一天(001-366)
  • %p 本地A.M.或P.M.的等价符
  • %U 一年中的星期数(00-53)星期天为星期的开始
  • %w 星期(0-6),星期天为星期的开始
  • %W 一年中的星期数(00-53)星期一为星期的开始
  • %x 本地相应的日期表示
  • %X 本地相应的时间表示
  • %Z 当前时区的名称
  • %% %号本身

Time 模块

  • time.gmtime([secs])接收时间戳(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组。
  • time.ctime([secs])把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式,作用相当于asctime(localtime(secs)),未给参数相当于asctime()
  • time.sleep(secs)推迟调用线程的运行,secs指秒数。

代码实现

import timeclass Mytime(object):def __init__(self):self.__info = '未开始计时!'self.__begin = Noneself.__end = Noneself.__jg = 0def __str__(self):return self.__infodef __repr__(self):return self.__infodef start(self):print('计时开始...')self.__begin = time.localtime()def stop(self):if not self.__begin:print('提示:请先调用start()开始计时!')returnself.__end = time.localtime()self.__jg = time.mktime(self.__end) - time.mktime(self.__begin)self.__info = '共运行了%d秒' % self.__jgprint('计时结束!')return self.__jgdef __add__(self, other):return '共运行了%d秒' % (other.__jg + self.__jg)t1 = Mytime()
print(t1)
# 未开始计时!
t1.stop()
# 提示:请先调用start()开始计时!
t1.start()
# 计时开始...
time.sleep(5)
t1.stop()
# 计时结束!
print(t1)
# 共运行了5秒
t2 = Mytime()
t2.start()
# 计时开始...
time.sleep(7)
t2.stop()
# 计时结束!
print(t2)
# 共运行了7秒
print(t1 + t2)
# 共运行了12秒

总结

这个题目让我们熟悉了 Python 中time模块的使用方法,以及类的定义和类中的一系列魔法方法,如__init____str____repr____add__等等,Python 的魔法方法很是神奇啊,把面向对象中的构造函数、析构函数、运算符的重载等全部包含了进去。需要好好体会才能把这块的知识学好。今天就这样吧!See You!


参考文献

  • https://www.bilibili.com/video/av4050443
  • https://www.cnblogs.com/lichunl/p/9098024.html

相关图文

  • 资料分享:数学建模资料分享 – 图论部分
  • 资料分享:数学建模资料分享 – 神经网络部分
  • 如何利用 C# 实现 K 最邻近算法?
  • 如何利用 C# 实现 K-D Tree 结构?
  • 如何利用 C# + KDTree 实现 K 最邻近算法?
  • 如何利用 C# 对神经网络模型进行抽象?
  • 如何利用 C# 实现神经网络的感知器模型?
  • 如何利用 C# 实现 Delta 学习规则?
  • 如何利用 C# 实现 误差反向传播 学习规则?
  • 如何利用 C# 爬取带 Token 验证的网站数据?
  • 如何利用 C# 向 Access 数据库插入大量数据?
  • 如何利用 C# + Python 破解猫眼电影的反爬虫机制?

技术图文:如何利用 Python 做一个简单的定时器类?相关推荐

  1. python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?

    原标题:技术图文:如何利用 Python 做一个简单的定时器类? 背景 今天在B站上看有关 Python 最火的一个教学视频 -- "零基础入门学习 Python",这也是我们 P ...

  2. 利用Python做一个简单的对战小游戏

    利用Python做一个简单的文字对战小游戏 一.游戏介绍 1.大体介绍:文字版的对战小游戏,可以利用Python随机生成两个角色,角色带有各自的血量和攻击值两个指标.两人在对战时同时攻击对方,同时造成 ...

  3. 利用Python做一个简单的打印店计费程序

    我自己买了一个打印机,除了自己用,打算方便大家,为大家提供付费打印服务. 按张数 x 计费: 1.你有纸,每张0.2元:0.2 * x 2.没纸,我有纸,分段计费: (1)1到20张,每张0.3元:0 ...

  4. 利用python做一个简单小应用--学生通讯录管理系统

    该简单学生通讯录管理系统六个可操作过程 1.添加学生 2.删除学生 3.修改学生 4.查询学生 5.获取所有学生通讯信息 6.退出系统 话不多说,上代码 # -*- codeing = utf-8 - ...

  5. java调python 监控_利用Python实现一个简单的系统监控图表

    作为运维人员,想必大家肯定都做过这样的事情:为了监控系统资源使用情况,开了若干个窗口,来回切换看输出: 只要我切得够快,性能异常点就逃不过我的眼睛! 这个时候你要是有个监控工具自然是很好的,例如我们美 ...

  6. 用python做一个简单GUI小软件

    用python做一个简单软件 前言 这是一个课设,用python做一个扫描王软件 我主要做的GUI部分,记录分享一下.也是第一次用python做小软件,python的方便果然是名不虚传 遇到问题 1. ...

  7. 用python做一个简单的游戏,用python写一个小游戏

    大家好,本文将围绕如何用python做一个简单的小游戏展开说明,python编写的入门简单小游戏是一个很多人都想弄明白的事情,想搞清楚用python做一个简单的游戏需要先了解以下几个事情. 1.Pyt ...

  8. 老滚5初始化python失败_五分钟学会怎么用python做一个简单的贪吃蛇

    Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发.我们今天将利用它来制作一款大家基本都玩过的小游戏--贪吃蛇. 一.需要导入的包 import pygame ...

  9. python推荐系统-利用python构建一个简单的推荐系统

    摘要: 快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫. 本文将利用python构建一个简单的推荐系统,在此之前读者需要对pandas和numpy等数据分析包有所了解. 什 ...

最新文章

  1. linux 终端 渐变色,iOS开发——UI篇文字渐变效果:图层中的mask属性
  2. 散列算法 SHA-1,SHA-2和SHA-256之间的区别
  3. java第10次作业 计科1501 张鹏
  4. asp.net MVC iis6 虚拟主机兼容开发方式
  5. 4k视频写入速度要求_为什么视频工作者需要外置硬盘?
  6. torch中的topk()函数
  7. 使用JWT进行跨域身份验证
  8. python-opencv图像处理之SIFT尺度不变特征变换
  9. 牛客网刷题(纯java题型 211~240题)
  10. 学习动态性能表3----v$session_wait
  11. Vue秒杀倒计时插件vue2-countdown
  12. macOS Big Sur 11.5 (20G71) 正式版 DMG、ISO、IPSW 百度网盘下载
  13. web前端开发工具支持及环境搭建
  14. python基础第一课(小白piao分享)
  15. R or Python,到底学哪个?这篇文章来告诉你......
  16. CUMCM-2017-problem-A
  17. python求多叉树任意两点之间的距离
  18. 现在Easy Scheduler想贡献给Apache基金会,我们做了一份问卷看下大家的想法,也请大家积极参与,谢谢!
  19. 到底什么是用户体验?
  20. MySQL多表查询之纵向合并

热门文章

  1. 计算机组成原理习题(一)
  2. java 简单万年历_JAVA实现的简单万年历代码
  3. UI设计培训分享:学习UI设计有哪些技巧
  4. LeetCode Python题解(一)----双指针法
  5. 大型互联网 b2b b2c o2o 电子商务云平台
  6. 禁止蒙层底部页面跟随滚动
  7. 下载Ext JS 5.1 gpl版本的方法
  8. Android媒体相关开发应用程序接口
  9. 添加Soap头来增加Web Service的安全性
  10. 路由器和交换机的综合实验