在 Python 中创建倒数计时器
本教程介绍如何在 Python 中创建倒数计时器。
该代码接受倒计时应该多长时间的输入,并在输入后立即开始倒计时。
在 Python 中使用 time
模块和 sleep()
函数创建倒数计时器
time
模块是一个通用的 Python 模块,包含与时间相关的实用函数和变量。本教程中使用的主要函数是 sleep()
函数,它是一个异步函数,可将单个线程的执行暂停 n
秒。
如果你的程序是单线程的,这就是本教程的情况,那么 sleep()
函数将停止整个程序运行,直到达到给定的经过时间。有了这个,连同经过验证的用户输入,我们可以在 Python 中创建一个简单的倒数计时器。
首先要做的是导入 time
模块以使用 sleep()
函数。
import time
然后声明一个函数作为倒数计时器。我们称这个函数为 countdown()
。该函数将接受一个参数:计时器将倒计时的秒数(num_of_secs
)。
num_of_secs
变量将在循环中不断递减,直到达到 0
(转换为 False
并在没有任何额外条件的情况下结束循环)。
在循环中,将输入变量 num_of_secs
格式化为 MM:SS
格式,并在每次递减时将其打印出来。为此,请使用 Python 内置函数 divmod()
,该函数接受两个数字并分别返回乘积和两个数字的余数。然后使用内置字符串函数 format()
将 divmod()
的元组结果格式化为 MM:SS
格式。
def countdown(num_of_secs):
while num_of_secs:
m, s = divmod(num_of_secs, 60)
min_sec_format = "{:02d}:{:02d}".format(m, s)
{:02d}
将参数格式化为 2 位整数(因为符号 02d
)。如果整数小于 2 位,它将添加前导 0
。
接下来,在循环的每次迭代中,调用 time.sleep(1)
,这意味着它会将每次迭代延迟 1 秒,并在经过后继续。
在调用 sleep()
函数之前,打印出类似于输入变量 num_of_secs
的当前值的 MM:SS
格式的格式化字符串。
此外,在 print()
函数中添加另一个参数,其属性为 end
,值为 /r
,这是一个模拟实际计时器行为的新行。每次执行循环时,此参数都会覆盖之前的 print()
输出,覆盖由符号 /r
表示的回车之前的所有内容。
def countdown(num_of_secs):
while num_of_secs:
m, s = divmod(num_of_secs, 60)
min_sec_format = "{:02d}:{:02d}".format(m, s)
print(min_sec_format, end="/r")
time.sleep(1)
num_of_secs -= 1
print("Countdown finished.")
之后,在所有前面的行都执行完后,将输入变量 min_sec_format
减 1。
最后,在循环外打印出一个结束语句,表示计时器已完成执行。它结束了 countdown()
方法并将用作倒数计时器。
接下来要做的是为用户提供一种方法来输入触发倒计时的秒数。为此,我们可以使用内置的 input()
函数来接受用户输入。
将输入捕获到变量中并将其用作倒计时函数的参数。确保将输入变量转换为 int
以进行验证。
inp = input("Input number of seconds to countdown: ")
countdown(int(inp))
整个代码应该是这样的:
import time
def countdown(num_of_secs):
while num_of_secs:
m, s = divmod(num_of_secs, 60)
min_sec_format = "{:02d}:{:02d}".format(m, s)
print(min_sec_format, end="/r")
time.sleep(1)
num_of_secs -= 1
print("Countdown finished.")
inp = input("Input number of seconds to countdown: ")
countdown(inp)
输出:
Countdown finished.
最终输出将显示 Countdown Finished
,但会模仿计时器的工作方式并清除每个 print()
行,直到到达 00:00
。
因此,如果你输入 5
秒,堆栈跟踪将如下所示:
00:05
00:04
00:03
00:02
00:01
Countdown finished.
你有它。你现在已经成功地使用 Python 中的内置函数和 time
模块中的 sleep()
函数成功地创建了一个简单的倒数计时器。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn