0
votes

NOOB Question Comment mettreai-je à jour une sortie d'une fonction d'impression sans créer de nouvelle ligne dans mon mandat de Python3?

Je ne suis pas vraiment sûr de savoir comment être honnête, mais voici une version simplifiée de mon code actuel.

Failed: 0
Failed: 1
Failed: 2
Failed: 3
Failed: 4
Failed: 5
Failed: 6
Failed: 7
Failed: 8
Failed: 9
Failed: 10


1 commentaires

Je pense qu'il y a une méthode system.flush . Vous pouvez également utiliser OS.System ("Clear") ou OS.System ("CLS") SUR WINDOWS.


4 Réponses :


-1
votes

whoops essayons à nouveau ...

Votre seule option consiste à effacer toute la console entre les impressions. Il y a deux façons d'aller à ce sujet. p>

Option 1: Vous pouvez essayer d'utiliser une séquence d'échappement ANSI, mais peut-être un peu d'option p> xxx pré>

: Utilisez le module OS P>

from os import system, name 
# Only on Unix
system('cls') 
# Only on windows
system('clear')


1 commentaires

Cela ne résout pas le problème, cela ne fait que rendre tout mot imprimé comprimé en une seule ligne, mais ne retirez pas celui imprimé avant.



0
votes

Ce que vous voulez probablement faire, c'est que le changement a échoué: 1 'échoué: 2', ne pas avoir 'échec: 1 échec: 2' sur la même ligne ou les mêmes lignes.

L'ASCII Backslash b (retour arrière) permet d'effacer les caractères sur la même ligne . Vous voudriez déplacer le curseur à l'endroit où le dernier numéro était et remplacez-le. P>

Voici un programme simple qui recule sur la même ligne et remplace le compteur. P>

import time
import sys

last_idx = None
prefix = ''
print("Failed: ", end="")
for idx in range(0,11):
    if last_idx is not None:
        prefix = '\b' * len(str(last_idx))

    print(prefix + str(idx), end='')
    # python buffers output so you want to flush it everytime.
    sys.stdout.flush()
    last_idx = idx
    # I've added a time.sleep here so you can see it happen rather than zoom past you
    time.sleep(1)


1 commentaires

Merci mec, cela a parfaitement travaillé pour moi. J'apprécie aussi que vous preniez le temps d'expliquer certaines choses aussi.



0
votes

Essayez ceci:

import sys
import time

for i in range(10):
    sys.stdout.write("\rFailed: {}".format(i))
    sys.stdout.flush()
    time.sleep(0.5)


1 commentaires

Vous êtes les bienvenus



0
votes

Il existe un deuxième paramètre que l'impression de fonction prend pour spécifier ce qui devrait imprimer faire à la fin de la ligne xxx


0 commentaires