简单版-不加字体效果

出发点是想在工作的时候在电脑上放一个倒计时提醒一下自己,按照一般常规思路我去搜索下载一个倒计时的客户端。

搜到一个2M的(好小)的软件,我突然意识到,我可是一个成熟的程序员了(手动滑稽),我为啥不自己实现想要的小工具?

计时器而已,逻辑不难,关键在于有头有尾的实现,还要有提示功能。

为此我复习了怎么在同一行输出倒计时的 分钟:秒数,还学到了python怎么调用windows系统的蜂鸣报警器。

代码实现如下:

#-*- coding:utf-8 –*-import time
import winsound
if __name__ == '__main__':minutes, seconds = 30, 10while minutes*seconds >= 0:print('\r倒计时: %d:%d' %(minutes,seconds), end='')time.sleep(1)if seconds == 0:minutes -= 1seconds = 59else:seconds -= 1print('\n时间到,请交卷!!!')winsound.Beep(60, 6000)

代码逻辑比较简单,当然也可以直接用总秒数递减,然后输出结果时再换算小时、分钟和秒数,可能更加灵活。

在使用蜂鸣报警器时遇到一个问题,当我把第一个参数设置为30(频率)的时候,程序运行报错

winsound.Beep(30, 6000)
ValueError: frequency must be in 37 thru 32767

我搜了一下,有说法称

考虑到37到32767频率之外的声音超出人耳能感受到的范围,故作此规定。

挺有道理的,可以参考一下。

复杂版-终端显示加上高亮提醒

按照一般说法是这样改

print('\r倒计时: %d:%d' %(minutes,seconds), end='')

改为

print('\r\033[1;32;40m倒计时: %d:%d\033[0m' %(minutes,seconds), end='')

其中\033是转义序列ESC的ASCII码,1表示高亮显示,32是绿色,40m是背景色黑色,注意结尾加  \033[0m  是为了让超出文字的部分不要加奇奇怪怪的背景色。pycharm运行效果如下:

看起来很正常,可是搬到终端运行。。

what?为啥不识别转义字符

解决方法,加一个包

from colorama import init
init(autoreset=True)

终端显示的效果:

结束,可以正常使用了。

等等,好像还少了一点什么?我难道每次设置倒计时的时间都得进程序改参数吗?用户体验在哪里?

说改就改

进阶版-用户体验

加提示,加左补零,加异常提示,同时出现异常程序也不会断掉,用户可以继续输入。

异常情况:

最终代码如下:

#-*- coding:utf-8 –*-import time
import winsound
from colorama import initif __name__ == '__main__':print('\t倒计时小程序上线!!')while True:try:minutes = int(input('\t请输入时分数:'))seconds = int(input('\t请输入时秒数:'))except:print('\t请输入正确的数字!!')continueinit(autoreset=True)while (minutes*seconds) >= 0:print('\r\033[1;32;40m\t倒计时: %02d:%02d\033[0m' %(minutes,seconds), end='')time.sleep(1)if seconds == 0:minutes -= 1seconds = 59else:seconds -= 1print('\n\t时间到,请交卷!!!')winsound.Beep(60, 6000)

可以愉快又专心地进行工作了呢

自制python计时器相关推荐

  1. 自制python小工具(3)——Gadgets1.1

    自制python小工具(3)--Gadgets 1.1 文章目录 自制python小工具(3)--Gadgets 1.1 1. 前言 2. 功能实现 2.1 主程序界面 2.1.1 标签与按钮 2.1 ...

  2. 手把手教你实现一个 Python 计时器

    作者 | 云朵君 来源 | 数据STUDIO 虽然许多数据工作者认为 Python 是一种有效的编程语言,但纯 Python 程序比C.Rust 和 Java 等编译语言中的对应程序运行得更慢,为了更 ...

  3. 装饰器是什么?一文详解装饰器原理及 Python 计时器实战

    在本文中,我将和大家一起了解装饰器的工作原理,如何将我们之前定义的定时器类 Timer 扩展为装饰器,以及如何简化计时功能.最后对 Python 定时器系列文章做个小结.喜欢记得收藏.关注.点赞. 文 ...

  4. 自制python小工具(2)——Gadgets 0.2

    自制python小工具(2)--Gadgets 0.2 文章目录 自制python小工具(2)--Gadgets 0.2 1. 前言 1.1 上篇 2. Gadgets 0.2更新功能介绍 3. Ga ...

  5. Python 自制简易计时器内核

    代码如下: import timeclass Timer:def __init__(self):self.real_time = 0 # 记录已经运行的时间self.setting_time = 1 ...

  6. python 计时器 timeit repeat 计算(语句)(函数)耗时 时间 运行时长

    文章目录 timeit 测试语句执行时间 测试函数执行时间 repeat 重复测试耗时 timeit 测试语句执行时间 # -*- coding: utf-8 -*- ""&quo ...

  7. python计时器timeit返回秒数_python中的计时器timeit的使用方法

    本文介绍了python中的计时器timeit的使用方法,分享给大家,具体如下: timeit 通常在一段程序的前后都用上time.time(),然后进行相减就可以得到一段程序的运行时间,不过pytho ...

  8. python计时器程序设计总框图_怎么用python编写计时器?这个编程的方法你一定不要错过...

    [摘要]现在学习python的人都在思考,怎么用python编写计时器?这个编程的方法你一定不要错过,环球网校小编建议大家可以试着自己编写功能性代码,毕竟实践出真知,所以你一定要知道怎么用python ...

  9. python 计时器_Python上下文管理器的魔力

    点击关注我哦 一篇文章带你了解Python上下文管理器的魔力 小编将为您准备一份很棒的Python上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...

最新文章

  1. Dropbox 官方中文版!最优秀实用的免费跨平台文件网络同步网盘云存储服务
  2. Python接口自动化之接口依赖
  3. Eclipse中快速查找类或代码
  4. dnf mysql密码多少_CentOS7 使用 dnf 安装 mysql
  5. Java swing 开发windows桌面应用:课堂点名程序
  6. iOS不能显示英文音标问题
  7. mysqldump 中参数 --set-gtid-purged 控制 SET @@GLOBAL.GTID_PURGED和 SET @@SESSION.SQL_LOG_BIN
  8. See system logs and ‘systemctl status docker.service‘ for details
  9. InfoPath 2007表单应用
  10. stm32增量式编码器使用流程
  11. ES7和ES8常见新特性
  12. jzoj P1285 奶酪厂
  13. MATLAB中删除矩阵的某些列或某些行
  14. 汉字动图动态图gif格式,无水印 4500个汉字
  15. 阿里游戏云事业部总经理马全治:推动阿里巴巴集团游戏生态联盟升级
  16. 我国在计算机科学领域故事,封面故事 | 张黔: 计算机世界的巾帼英姿
  17. Git系列文章(8):Git分支(4)
  18. java报价单_开票与报价或估算
  19. 类人猿学院易语言 yolov7 雷神中控+大漠原生多线程三合一系列教程(最强中控)
  20. 七段随机颜色电子管绘制

热门文章

  1. Chrome浏览器扩展的写法
  2. 3D游戏模型提取、导入、导出教程
  3. 世界服务器无限刷钱,辐射4无限刷钱刷物资方法讲解
  4. Linux(centos7版本下安装Node)
  5. POJ 3268 Silver Cow Party--正反Dijkstra
  6. 每天淡定五分钟+每天淡定五分钟,你能多活十几年
  7. 吃鸡无限服务器,吃鸡无限服务器忙碌 | 手游网游页游攻略大全
  8. 浏览器下载服务器上的文件(EXCEL)
  9. 百度地图设置卫星、矢量模式,球模型和瓦片模型加载
  10. Linux必会命令集