2017-02-06 2 views
0

Mon code actuel est le suivant:Supprimer la ligne précédente et le remplacer par une nouvelle ligne?

for a in xrange (60, 0, -1): 
    b = "Sleeping for " + str(a) + " seconds\r" 
    print b, 
    sleep(1) 

La seule question que j'ai avec c'est que quand il passe de 2 chiffres à 1 numéros de chiffres, il imprime SECONDS au lieu de secondes. Comment puis-je modifier mon code pour remplacer correctement la ligne quand un va de 2 chiffres à 1. De plus, après que le script ait fini d'imprimer les lignes "Dormir pour __ secondes", je peux le remplacer par une ligne qui dit "Dormir pour 60 secondes terminées "

+0

Vous pouvez appeler chaîne numérique avec '' zfill' comme '1'.zfill (2) 'qui retourne '01' alors que' '12'.zfill (2) 'renvoie' 12' –

+0

Essayez d'utiliser 'b =" Dormir pendant {: 2} secondes \ r ".format (a)'. – martineau

Répondre

0

Comment utiliser la mise en forme de chaîne?

for a in xrange (60, 0, -1): 
    print "Sleeping for %2d seconds...\r" % a, 
    sleep(1) 
print "Sleeping for 60 seconds complete!" 
+0

Fonctionne parfaitement lorsque vous remplacez le sommeil (a) avec le sommeil (1) –

+0

@DanteArcese Je pensais que vous vouliez qu'il dorme une période différente à chaque fois. fixe – Uriel

+0

Maintenant qu'il est fixé oui –

1

Vous devez supprimer la virgule dans la ligne d'impression pour voir la sortie d'impression

0

vous pouvez imprimer une chaîne de longueur égale des espaces pour le couvrir:

for a in xrange(60, 0, -1): 
    out = "sleeping for {} seconds\r".format(a) 
    sys.stdout.write(out) 
    sys.stdout.flush() 
    time.sleep(1) 
    clear = " " * len(out) 
    sys.stdout.write(clear + "\r") 
print "Done" 

vous peut également ajouter à out ellipses pour le couvrir jusqu'à:

for a in xrange(60, 0, -1): 
    out = "sleeping for {} seconds..\r".format(a) 
    sys.stdout.write(out) 
    sys.stdout.flush() 
    time.sleep(1) 
print "Done"