- 内容提要
- 作者简介
- 技术评审者简介
- 致谢
- 译者序 会编程的人不一样
- 前言
- 本书的读者对象
- 编码规范
- 什么是编程
- 本书简介
- 下载和安装 Python
- 启动 IDLE
- 如何寻求帮助
- 聪明地提出编程问题
- 小结
- 第一部分 Python 编程基础
- 第1章 Python 基础
- 第2章 控制流
- 第3章 函数
- 第4章 列表
- 第5章 字典和结构化数据
- 第6章 字符串操作
- 第二部分 自动化任务
- 第7章 模式匹配与正则表达式
- 第8章 读写文件
- 第9章 组织文件
- 第10章 调试
- 第11章 从 Web 抓取信息
- 第12章 处理 Excel 电子表格
- 第13章 处理 PDF 和 Word 文档
- 第14章 处理 CSV 文件和 JSON 数据
- 第15章 保持时间、计划任务和启动程序
- 第16章 发送电子邮件和短信
- 第17章 操作图像
- 第18章 用 GUI 自动化控制键盘和鼠标
- 附录A 安装第三方模块
- 附录B 运行程序
- 附录C 习题答案
15.9 项目:简单的倒计时程序
就像很难找到一个简单的秒表应用程序一样,也很难找到一个简单的倒计时程序。让我们来写一个倒计时程序,在倒计时结束时报警。
总的来说,程序要做到:
· 从60倒数。
· 倒数至0时播放声音文件(alarm.wav)。
这意味着代码将需要做到以下几点:
· 在显示倒计时的每个数字之间,调用time.sleep()暂停一秒。
· 调用subprocess.Popen(),用默认的应用程序播放声音文件。
打开一个新的文件编辑器窗口,并保存为countdown.py。
第1步:倒计时
这个程序需要time模块的time.sleep()函数,subprocess模块的subprocess. Popen()函数。输入以下代码并保存为countdown.py:
#! python3 # countdown.py - A simple countdown script. import time, subprocess ❶ timeLeft = 60 while timeLeft > 0: ❷ print(timeLeft, end='') ❸ time.sleep(1) ❹ timeLeft = timeLeft - 1 # TODO: At the end of the countdown, play a sound file.
导入time和subprocess后,创建变量timeleft,保存倒计时剩下的秒数❶。它从60开始,或者可以根据需要更改这里的值,甚至通过命令行参数设置它。
在while循环中,显示剩余次数❷,暂停一秒钟❸,再减少timeleft变量的值❹,然后循环再次开始。只要timeleft大于0,循环就继续。在这之后,倒计时就结束了。
第2步:播放声音文件
虽然有第三方模块,播放各种声音文件,但快速而简单的方法,是启动用户使用的任何播放声音文件的应用程序。操作系统通过.wav文件扩展名,会弄清楚应该启动哪个应用程序来播放该文件。这个.wav文件很容易变成其他声音文件格式,如.mp3或.ogg。
可以使用计算机上的任何声音文件,在倒计时结束播放,也可以从http://nostarch. com/automatestuff/下载alarm.wav。
在程序中添加以下代码:
#! python3 # countdown.py - A simple countdown script. import time, subprocess --snip-- # At the end of the countdown, play a sound file. subprocess.Popen(['start', 'alarm.wav'], shell=True)
while循环结束后,alarm.wav(或你选择的声音文件)将播放,通知用户倒计时结束。在Windows上,要确保传入Popen()的列表中包含'start',并传入关键字参数shell=True。在OS X上,传入'open',而不是'start’,并去掉shell=True。
除了播放声音文件之外,你可以在一个文本文件中保存一条消息,例如Break time is over!。然后在倒计时结束时用Popen()打开它。这实际上创建了一个带消息的弹出窗口。或者你可以在倒计时结束时,用webbrowser.open()函数打开特定网站。不像在网上找到的一些免费倒计时应用程序,你自己的倒计时程序的警报可以是任何你希望的方式!
第3步:类似程序的想法
倒计时是简单的延时,然后继续执行程序。这也可以用于其他应用程序和功能,诸如:
· 利用time.sleep()给用户一个机会,按下Ctrl-C取消的操作,例如删除文件。你的程序可以打印“Press Ctrl-C to cancel”,然后用try和except语句处理所有KeyboardInterrupt异常。
· 对于长期的倒计时,可以用timedelta对象来测量直到未来某个时间点(生日?周年纪念?)的天、时、分和秒数。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论