Часы обратного отсчета: 01:05
Как создать обратный отсчет времени в Python, который выглядит как 00:00 (мин/сек), который находится на отдельной строке. Каждый раз, когда он уменьшается на одну действительную секунду, старый таймер должен быть заменен на своей линии новым таймером, который на одну секунду ниже: 01:00
становится 00:59
и на самом деле он 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!
Я знаю, что это похоже на другие вопросы обратного отсчета, но я считаю, что у него есть собственный поворот.
Ответы
Ответ 1
Помимо форматирования времени в минутах и секундах, вам нужно распечатать возврат каретки. Задать 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')
Это гарантирует, что следующая печать перезапишет последнюю напечатанную строку:
Ответ 2
Вот код, который отсчитывается с 01:05 до 00:00 в формате MM: SS.
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)
Ответ 3
Для простоты этот код способен сказать вам, сколько времени потребуется до следующего желаемого времени, которое может быть тем, что вы хотите сделать в своей программе. В вашем случае это своего рода таймер обратного отсчета.
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
Удачи вам в кодировании.
Ответ 4
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)
Ответ 5
Может быть, эта ссылка поможет: Создание таймера в 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!