自制python计时器
简单版-不加字体效果
出发点是想在工作的时候在电脑上放一个倒计时提醒一下自己,按照一般常规思路我去搜索下载一个倒计时的客户端。
搜到一个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计时器相关推荐
- 自制python小工具(3)——Gadgets1.1
自制python小工具(3)--Gadgets 1.1 文章目录 自制python小工具(3)--Gadgets 1.1 1. 前言 2. 功能实现 2.1 主程序界面 2.1.1 标签与按钮 2.1 ...
- 手把手教你实现一个 Python 计时器
作者 | 云朵君 来源 | 数据STUDIO 虽然许多数据工作者认为 Python 是一种有效的编程语言,但纯 Python 程序比C.Rust 和 Java 等编译语言中的对应程序运行得更慢,为了更 ...
- 装饰器是什么?一文详解装饰器原理及 Python 计时器实战
在本文中,我将和大家一起了解装饰器的工作原理,如何将我们之前定义的定时器类 Timer 扩展为装饰器,以及如何简化计时功能.最后对 Python 定时器系列文章做个小结.喜欢记得收藏.关注.点赞. 文 ...
- 自制python小工具(2)——Gadgets 0.2
自制python小工具(2)--Gadgets 0.2 文章目录 自制python小工具(2)--Gadgets 0.2 1. 前言 1.1 上篇 2. Gadgets 0.2更新功能介绍 3. Ga ...
- Python 自制简易计时器内核
代码如下: import timeclass Timer:def __init__(self):self.real_time = 0 # 记录已经运行的时间self.setting_time = 1 ...
- python 计时器 timeit repeat 计算(语句)(函数)耗时 时间 运行时长
文章目录 timeit 测试语句执行时间 测试函数执行时间 repeat 重复测试耗时 timeit 测试语句执行时间 # -*- coding: utf-8 -*- ""&quo ...
- python计时器timeit返回秒数_python中的计时器timeit的使用方法
本文介绍了python中的计时器timeit的使用方法,分享给大家,具体如下: timeit 通常在一段程序的前后都用上time.time(),然后进行相减就可以得到一段程序的运行时间,不过pytho ...
- python计时器程序设计总框图_怎么用python编写计时器?这个编程的方法你一定不要错过...
[摘要]现在学习python的人都在思考,怎么用python编写计时器?这个编程的方法你一定不要错过,环球网校小编建议大家可以试着自己编写功能性代码,毕竟实践出真知,所以你一定要知道怎么用python ...
- python 计时器_Python上下文管理器的魔力
点击关注我哦 一篇文章带你了解Python上下文管理器的魔力 小编将为您准备一份很棒的Python上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...
最新文章
- Dropbox 官方中文版!最优秀实用的免费跨平台文件网络同步网盘云存储服务
- Python接口自动化之接口依赖
- Eclipse中快速查找类或代码
- dnf mysql密码多少_CentOS7 使用 dnf 安装 mysql
- Java swing 开发windows桌面应用:课堂点名程序
- iOS不能显示英文音标问题
- mysqldump 中参数 --set-gtid-purged 控制 SET @@GLOBAL.GTID_PURGED和 SET @@SESSION.SQL_LOG_BIN
- See system logs and ‘systemctl status docker.service‘ for details
- InfoPath 2007表单应用
- stm32增量式编码器使用流程
- ES7和ES8常见新特性
- jzoj P1285 奶酪厂
- MATLAB中删除矩阵的某些列或某些行
- 汉字动图动态图gif格式,无水印 4500个汉字
- 阿里游戏云事业部总经理马全治:推动阿里巴巴集团游戏生态联盟升级
- 我国在计算机科学领域故事,封面故事 | 张黔: 计算机世界的巾帼英姿
- Git系列文章(8):Git分支(4)
- java报价单_开票与报价或估算
- 类人猿学院易语言 yolov7 雷神中控+大漠原生多线程三合一系列教程(最强中控)
- 七段随机颜色电子管绘制