倒计时钟:01:05

22 投票
5 回答
87135 浏览
提问于 2025-04-18 16:26

我想在Python中创建一个倒计时钟,显示格式是00:00(分钟和秒),并且要单独占一行。每当时间减少一秒时,旧的计时器应该在这一行被新的计时器替换,新的计时器比旧的低一秒:比如01:00变成00:59,最后会变成00:00

这是我开始时写的一个基本计时器,但我想对它进行改造:

def countdown(t):
    import time
    print('This window will remain open for 3 more seconds...')
    while t >= 0:
        print(t, end='...')
        time.sleep(1)
        t -= 1
    print('Goodbye! \n \n \n \n \n')

t=3

我还想确保在Goodbye!之后的任何内容(这很可能是在函数外面)会单独占一行。

结果: 3...2...1...0...Goodbye!

我知道这和其他倒计时的问题有点相似,但我觉得这个问题有它自己独特的地方。

5 个回答

-1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用一个叫做“库”的东西时,发现它不太好用,或者和他们的代码不兼容。这种情况就像你买了一个新玩具,但发现它和你现有的玩具不太搭配,玩起来不顺手。

在这种情况下,解决问题的第一步是查看这个库的文档。文档就像是玩具的说明书,里面会告诉你怎么正确使用这个库,或者它有哪些功能。如果文档写得清楚,通常能帮助你找到解决方案。

如果文档没有解决你的问题,下一步可以去网上找一些讨论,比如在StackOverflow这样的论坛上。这里有很多程序员分享他们的经验和解决方案,就像一个大家庭,互相帮助。

最后,如果你还是找不到答案,可以考虑向社区提问。记得把你的问题描述清楚,提供一些代码示例,这样别人才能更好地理解你的问题并给出建议。

import time
import sys

print(' ')
print('Countdown Timer, By Adam Gay')
print(' ')
print('Instructions: Input time to countdown from.')
print(' ')

c=':'

hourz=input('Hours: ')
minz=input('Minutes: ')
secz=input('Seconds: ')
print(' ')

hour=int(hourz)
min=int(minz)
sec=int(secz)

while hour > -1:
    while min > -1:
        while sec > 0:
            sec=sec-1
            time.sleep(1)
            sec1 = ('%02.f' % sec)  # format
            min1 = ('%02.f' % min)
            hour1 = ('%02.f' % hour)
            sys.stdout.write('\r' + str(hour1) + c + str(min1) + c + str(sec1))

        min=min-1
        sec=60
    hour=hour-1
    min=59

Print('Countdown Complete.')
time.sleep(30)
1

也许这个链接会对你有帮助:在Python 3中制作一个计时器

看看我的回答,它对你也是适用的!

总之,这里是答案:

import time
import os
hour = int(input('Enter any amount of hours you want -+==> '))
minute = int(input('Enter any amount of minutes you want -+==> '))
second = int(input('Enter any amount of seconds you want -+==> '))
time = hour*10800 + minute*3600 + second*60
print('{}:{}:{}'.format(hour,minute,second))
while time > 0:
   time = time - 1
   seconds = (time // 60) % 60
   minutes = (time // 3600)
   hours = (time // 10800)
   print('Time Left -+==> ',hours,':',minutes,':',seconds,)
   os.system("CLS")
if time == 0:
   print('Time Is Over!') 

输入:

Enter any amount of hours you want -+==> 0
Enter any amount of minutes you want -+==> 0 
Enter any amount of seconds you want -+==> 10

输出 # 所有内容都在同一行

Time Left -+==> 0:0:10
Time Left -+==> 0:0:9
Time Left -+==> 0:0:8
Time Left -+==> 0:0:7
Time Left -+==> 0:0:6
Time Left -+==> 0:0:5
Time Left -+==> 0:0:4
Time Left -+==> 0:0:3
Time Left -+==> 0:0:2
Time Left -+==> 0:0:1
Time Left -+==> 0:0:0
Time Is Over!
1

为了简单起见,这段代码可以告诉你距离下一个你想要的时间还有多久,这个时间可以是你程序中任何你想要的事情。在你的情况下,这就像一个倒计时器。

from datetime import datetime

x=datetime.today()
y=x.replace(day=x.day+1, hour=3, minute=1, second=0, microsecond=0)
delta_t=y-x
secs=delta_t.seconds+1

second = (secs % 60)
minut = (secs / 60) % 60
hour = (secs / 3600)
print ("Seconds: %s " % (second))
print ("Minute: %s " % (minut))
print ("Hour: %s" % (hour))

print ("Time is %s:%s:%s" % (hour, minut, second))

然后,输出结果如下:

Seconds: 50 
Minute: 32 
Hour: 12
Time is 12:32:50

祝你编程顺利。

3

下面是一个代码,它可以从 01:05 倒计时到 00:00,格式是分钟:秒。

Python 3 :

import time
def countdown(p,q):
    i=p
    j=q
    k=0
    while True:
        if(j==-1):
            j=59
            i -=1
        if(j > 9):  
            print(str(k)+str(i)+":"+str(j), end="\r")
        else:
            print(str(k)+str(i)+":"+str(k)+str(j), end="\r")
        time.sleep(1)
        j -= 1
        if(i==0 and j==-1):
            break
    if(i==0 and j==-1):
        print("Goodbye!", end="\r")
        time.sleep(1)
countdown(1,5) #countdown(min,sec)

Python 2 :

import time
def countdown(p,q):
    i=p
    j=q
    k=0
    while True:
        if(j==-1):
            j=59
            i -=1
        if(j > 9):  
            print "\r"+str(k)+str(i)+":"+str(j),
        else:
            print "\r"+str(k)+str(i)+":"+str(k)+str(j),
        time.sleep(1)
        j -= 1
        if(i==0 and j==-1):
            break
    if(i==0 and j==-1):
        print "\rGoodbye!"
        time.sleep(1)
countdown(1,5) #countdown(min,sec)
59

除了把时间格式化为分钟和秒钟之外,你还需要打印一个回车符。把end设置为\r

import time

def countdown(t):
    while t:
        mins, secs = divmod(t, 60)
        timeformat = '{:02d}:{:02d}'.format(mins, secs)
        print(timeformat, end='\r')
        time.sleep(1)
        t -= 1
    print('Goodbye!\n\n\n\n\n')

这样做可以确保下一次打印的内容会覆盖掉最后一行打印的内容:

倒计时

撰写回答