自制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上下文管理器使用指南,这将使您的代码更具可读性和可靠性,降低您的错误发生率. 资源管理器是我们在任何编 ...
最新文章
- SQLServer Date
- centos6.4下安装python3.6以及对应的django1.11
- thinkphp使用echarts_Thinkphp 与Echarts-php 使用
- 编程入门到进大厂,分享一点学习经验
- pdf 改变页面大小 python_python – 裁剪.pdf文件的页面
- 【Java】java JMX之ObjectName
- Android开发笔记(一百零三)地图与定位SDK
- 解决SVN汉化不成功问题,下载历史版本
- Linux 安装flash
- PNP型三极管s9012驱动共阳极数码管
- html 汉字美化,HTML5 | 0 0 6 - 美化字体
- 干货|以产品要素设计解读线上小微信贷
- Mathorcup数学建模竞赛第六届-【妈妈杯】A题:淡水养殖池塘水华发生及池水自净化研究(附一等奖获奖论文和matlab代码)
- win7/win10下KiWi Syslog服务器的安装与配置
- 2022-2028全球与中国无线和多室音频市场现状及未来发展趋势
- vss 2005 手册
- dio设置自定义post请求_强大的dio封装,可能满足你的一切需要
- 我本人一直以来犯的错误,在看了《Think In Java》后才抓了出来
- 小猫爪:PMSM之FOC控制05-让电机开环转起来
- Linux 学习数据专题【管理、编程、源码分析】——Linux相关图书选购指南
热门文章
- 安卓8.0和7.0有什么区别 8.0系统新功能盘点[安卓中文网]
- html转换英文时间格式,JavaScript(jQuery)打印英文格式日期的实例代码
- YUYV 转 RGB 24
- 两种方法对经典最小二乘法的改进
- 数字孪生助力智慧城市、楼宇、园区场景数字化系统建设
- 使用Scrapy框架编写 东方财富网eastmoney的爬虫
- 移植python3.6.2至FCU1101笔记(zlib、sqlite3)
- i31005g1和锐龙r5 3500u哪个好
- 基于GJB 1406A-2005的质量保证大纲
- Saxon: 剖析 XSLT 处理器