就像很难找到一个简单的秒表应用程序一样,也很难找到一个简单的倒计时程序。 接下来写一个倒计时程序,在倒计时结束时报警。
总的来说,程序要做到:
- 从60倒数。
- 倒数至0时播放声音文件(
alarm.wav
)。
这意味着代码将需要做到以下几点:
- 在显示倒计时的每个数字之间,调用
time.sleep()
暂停一秒。 - 调用
subprocess.Popen()
,用默认的应用程序播放声音文件。
打开一个新的文件编辑器窗口,并保存为 countdown.py
。
倒计时
这个程序需要 time
模块的 time.sleep()
函数,
subprocess
模块的 subprocess.Popen()
函数。
输入以下代码并保存为 countdown.py
:
countdown.py
—— 一款轻量级倒计时脚本。
#! python3
import time, subprocess
timeLeft = 10
while timeLeft > 0:
print(timeLeft,end=' ')
time.sleep(1)
timeLeft = timeLeft - 1
# TODO: At the end of the countdown, play a sound file.
10 9 8 7 6 5 4 3 2 1
导入 time
和 subprocess
后,创建变量 timeleft
,
保存倒计时剩下的秒数。它从10开始,或者可以根据需要更改这里的值,
甚至通过命令行参数设置它。
在 while
循环中,显示剩余次数,暂停一秒钟,
再减少timeleft
变量的值,然后循环再次开始。
只要 timeleft
大于0,循环就继续。在这之后,倒计时就结束了。
播放声音文件
虽然有第三方模块,播放各种声音文件,但快速而简单的方法,
是启动用户使用的任何播放声音文件的应用程序。操作系统通过 .wav
文件扩展名,
会弄清楚应该启动哪个应用程序来播放该文件。
这个 .wav
文件很容易变成其他声音文件格式,
如 .mp3
或 .ogg()
。
可以使用计算机上的任何声音文件,在倒计时结束播放,
也可以从http://nostarch.com/automatestuff/ 下载
alarm.wav()
在程序中添加以下代码:
import time, subprocess
timeLeft = 10
while timeLeft > 0:
print(timeLeft,end=' ')
time.sleep(1)
timeLeft = timeLeft - 1
10 9 8 7 6 5 4 3 2 1
倒计时结束时播放提示音。
subprocess.Popen(['start','alarm.wav'],shell=True)
alarm.wav: 1: start: not found
<Popen: returncode: None args: ['start', 'alarm.wav']>
while
循环结束后, alarm.wav
(或选择的声音文件)
将播放,通知用户倒计时结束。在 Windows 上,要确保传入
Popen()
的列表中包含'start
',并传入关键字参数
shell
= True
。在OS X上,传入'open'
,
而不是 'start'
,并去掉shell= True
。
除了播放声音文件之外,可以在一个文本文件中保存一条消息,
例如 Break time is over!
。然后在倒计时结束时用
Popen()
打开它。这实际上创建了一个带消息的弹出窗口。
或者可以在倒计时结束时,用 webbrowser.open()
函数
打开特定网站。不像在网上找到的一些免费倒计时应用程序,
自己的倒计时程序的警报可以是任何希望的方式!
倒计时是简单的延时,继续执行程序。 这也可以用于其他应用程序和功能。
诸如:
- 利用
time.sleep()
给用户一个机会,按下Ctrl-C取消的 操作,例如删除文件。程序可以打印“Press Ctrl-C to cancel
”, 然后用try
和except
语句处理所有Keyboardlnterrupt
异常。 - 对于长期的倒计时,可以用
timedelta
对象来测量直到未来某个时间点 (生曰?周年纪念?)的天、时、分和秒数。