web-dev-qa-db-fra.com

Compte à rebours: 01:05

Comment puis-je créer une horloge de compte à rebours en Python qui ressemble à 00:00 (min & sec) et qui se trouve sur une ligne distincte. Chaque fois qu'il diminue d'une réelle seconde, l'ancien minuteur doit être remplacé sur sa ligne par un nouveau minuteur inférieur d'une seconde: 01:00 devient 00:59 et frappe en fait 00:00.

Voici une minuterie de base avec laquelle j'ai commencé mais que je veux transformer:

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

Je veux aussi m'assurer que tout ce qui suit le Goodbye! (ce qui serait probablement en dehors de la fonction) sera sur sa propre ligne.

RÉSULTAT: 3...2...1...0...Goodbye!

Je sais que cela ressemble à d’autres questions relatives au compte à rebours, mais j’estime qu’il a sa propre tournure.

12
trev

Outre le formatage de votre temps en minutes et en secondes, vous devez imprimer un retour chariot. Définissez end sur \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')

Cela garantit que l’impression next écrase la dernière ligne imprimée:

countdown

35
Martijn Pieters

Voici le code qui compte de 01h05 à 00h00 au format 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
Srivvishnu

Pour la simplicité, ce code est capable de vous dire combien de temps cela prend jusqu'au prochain moment souhaité, ce qui peut être ce que vous voulez faire dans votre programme. Dans votre cas, il s’agit d’une sorte de compte à rebours. 

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))

Ensuite, la sortie est la suivante:

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

Bonne chance avec votre codage. 

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)
0
adam gay