简单版-不加字体效果

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

搜到一个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. SQLServer Date
  2. centos6.4下安装python3.6以及对应的django1.11
  3. thinkphp使用echarts_Thinkphp 与Echarts-php 使用
  4. 编程入门到进大厂,分享一点学习经验
  5. pdf 改变页面大小 python_python – 裁剪.pdf文件的页面
  6. 【Java】java JMX之ObjectName
  7. Android开发笔记(一百零三)地图与定位SDK
  8. 解决SVN汉化不成功问题,下载历史版本
  9. Linux 安装flash
  10. PNP型三极管s9012驱动共阳极数码管
  11. html 汉字美化,HTML5 | 0 0 6 - 美化字体
  12. 干货|以产品要素设计解读线上小微信贷
  13. Mathorcup数学建模竞赛第六届-【妈妈杯】A题:淡水养殖池塘水华发生及池水自净化研究(附一等奖获奖论文和matlab代码)
  14. win7/win10下KiWi Syslog服务器的安装与配置
  15. 2022-2028全球与中国无线和多室音频市场现状及未来发展趋势
  16. vss 2005 手册
  17. dio设置自定义post请求_强大的dio封装,可能满足你的一切需要
  18. 我本人一直以来犯的错误,在看了《Think In Java》后才抓了出来
  19. 小猫爪:PMSM之FOC控制05-让电机开环转起来
  20. Linux 学习数据专题【管理、编程、源码分析】——Linux相关图书选购指南

热门文章

  1. 安卓8.0和7.0有什么区别 8.0系统新功能盘点[安卓中文网]
  2. html转换英文时间格式,JavaScript(jQuery)打印英文格式日期的实例代码
  3. YUYV 转 RGB 24
  4. 两种方法对经典最小二乘法的改进
  5. 数字孪生助力智慧城市、楼宇、园区场景数字化系统建设
  6. 使用Scrapy框架编写 东方财富网eastmoney的爬虫
  7. 移植python3.6.2至FCU1101笔记(zlib、sqlite3)
  8. i31005g1和锐龙r5 3500u哪个好
  9. 基于GJB 1406A-2005的质量保证大纲
  10. Saxon: 剖析 XSLT 处理器