Effacement

Signaler
Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021
-
Messages postés
15950
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 mai 2021
-
Bonjour,
j'ai fait un programme (ci-dessous), pour qu'il affiche une chaine de caractères, l'efface et la réécrive, ceci infiniment sauf qu'il ne l'efface pas. Ma question c'est comment l'effacer à la fin. J'espère que vous pourrez m'aider.

Le programme :
import random
import sys
import time
a=1
while(a):
    sys.stdout.write(str("b"))
    time.sleep(0.1)
    sys.stdout.write(str("y"))
    time.sleep(0.1)
    sys.stdout.write(str(" "))
    time.sleep(0.1)
    sys.stdout.write(str("P"))
    time.sleep(0.1)
    sys.stdout.write(str("U"))
    time.sleep(0.1)
    sys.stdout.write(str("N"))
    time.sleep(0.1)
    sys.stdout.write(str("I"))
    time.sleep(0.1)
    sys.stdout.write(str("S"))
    time.sleep(0.1)
    sys.stdout.write(str("H"))
    time.sleep(0.1)
    sys.stdout.write(str("E"))
    time.sleep(0.1)
    sys.stdout.write(str("R"))
    time.sleep(0.1)
    sys.stdout.write(str("0"))
    time.sleep(0.1)
    sys.stdout.write(str("7"))
    time.sleep(0.1)
    sys.stdout.write(str("8"))
    time.sleep(0.1)
    sys.stdout.write(str("5"))
    time.sleep(0.1)
    sys.stdout.write(str(" "))
    time.sleep(0.1)
    a=a+1

9 réponses

Messages postés
15950
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 mai 2021
546
Bonjour

en python, il y a un truc impératif => l'indentation
En postant ton code, comme tu l'as fait, le site l'enlève.

Pour la conserver, il faut faire comme décrit dans ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

Désolé, je suis nouveau sur le site. Merci de me l'avoir dit
Messages postés
24
Date d'inscription
vendredi 12 juin 2020
Statut
Non membre
Dernière intervention
9 mai 2021
3
Après recherche sur internet:

Sous linux, essayer :

import os
os.system('clear')

Sous windows :

import os
os.system('cls')

Je n'ai pas eu le temps de tester.
Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

J'ai testé mais cela ne marche pas. Mais merci quand même.
Messages postés
15950
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 mai 2021
546
Bonjour

@ Punisher0785 maintenant que Karamel a rendu ton code lisible, on aurait pu essayer de te faire réfléchir un peu par toi même sur la raison principale qui fait que ton code ne vide pas la console => y'a aucune ligne qui fait quoi que ce soit en ce sens.

Mais bon Gandalifx a choisi de te donner une solution toute faite, on zappe l'étape où tu réfléchis un peu et où souvent tu retiens mieux (au moins la méthode pour trouver par toi-même) qu'avec une réponse toute cuite....

Donc ce qu'il aurait fallu que tu fasses, c'est te dire que ce genre de question simple a surement déjà été posée. P'tet en français, sûrement en anglais. Ensuite il aurait fallu rassembler les éléments pour faire une recherche
  • Ton langage : Python (pareil en anglais)
  • Ton environnement : la console (pareil en anglais)
  • L'action a réaliser Effacer/Nettoyer (clear en anglais)

Et lancer 2 rechercher
https://lite.qwant.com/?q=Python+console+effacer&client=opensearch
et/ ou
https://lite.qwant.com/?q=Python+console+clear


Donc, si des fois ça t'intéresse, on va te faire réfléchir sur 2 choses à améliorer/corriger dans ton code
  • Question 1

a=1
while(a):
    #plein de ligne
    a=a+1 #pourquoi incrémenter a?
  • Question 2

    sys.stdout.write(str("b"))
    time.sleep(0.1)
    sys.stdout.write(str("y"))
    time.sleep(0.1)
    sys.stdout.write(str(" "))
    time.sleep(0.1)
    sys.stdout.write(str("P"))
    time.sleep(0.1)
    sys.stdout.write(str("U"))
    time.sleep(0.1)
    sys.stdout.write(str("N"))
    time.sleep(0.1)
    sys.stdout.write(str("I"))
    time.sleep(0.1)
    sys.stdout.write(str("S"))
    time.sleep(0.1)
    sys.stdout.write(str("H"))
    time.sleep(0.1)
    sys.stdout.write(str("E"))
    time.sleep(0.1)
    sys.stdout.write(str("R"))
    time.sleep(0.1)
    sys.stdout.write(str("0"))
    time.sleep(0.1)
    sys.stdout.write(str("7"))
    time.sleep(0.1)
    sys.stdout.write(str("8"))
    time.sleep(0.1)
    sys.stdout.write(str("5"))
    time.sleep(0.1)
    sys.stdout.write(str(" "))
    time.sleep(0.1)

Ça ne t'a pas cassé les pieds d'écrire 16 fois la même chose (à un caractère près)?
S'il y a une erreur, il va te falloir corriger 8 fois ou 16 fois cette erreur?
Comment va tu faire pour que le message affiché soit
"Salut, mois j'adore perdre mon temps à taper des lignes et des lignes qui ne servent à rien, alors Whismeril, un peu moqueur, s'amuse à m'en faire taper encore plus"
?
Messages postés
15950
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 mai 2021
546
Si le code de Gandalfix ne fonctionne pas, effectue les 2 recherches que je t'ai proposées
Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

Deja fait, ça fait une heure que je cherche et j'ai testé une 30ène de trucs mais rien marche. Et pour la question que tu m'a posée, je sais absolument pas. Je l'ai deja dit, ça fait pas longtemps que j'ai commencé python, je suis encore un noob.
Messages postés
15950
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 mai 2021
546
Dans la recherche en anglais, il y a https://www.csestack.org/clear-python-interpreter-console/

As tu essayé?
Messages postés
15950
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 mai 2021
546
Je ne code pas en python, du coup, pour le forum j'utilise des sites de code en ligne.
Et avec celui que je viens d'utiliser sys.stdout.write ne fonctionne pas.
D'ailleurs, à la réflection, c'est la première fois que je vois cette façon de faire.

Est ce que chez toi, le texte s'affiche?
Messages postés
15950
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 mai 2021
546
De mon coté, j'ai remplacé
sys.stdout.write(str("b"))
par
print("b")
et ainsi de suite => le texte s'affiche.

Puis j'ai appliqué la méthode Unix décrite dans le lien du message 8 et ça marche.

Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

Oui mais le truc, c'est que quand je remplace par print bah ça me saute une ligne au lieu de rester sur la même ligne.
Messages postés
15950
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 mai 2021
546
peu importe pour le print, c'est sur le site ou moi j'essaye, que j'en ai besoin.
Est ce que chez toi la méthode du message 8 fonctionne?
Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

Non, j'ai essayé toutes les méthodes du site, aucune ne fonctionne. Peut-être que c'est mon éditeur python qui a un problème.
Messages postés
15950
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 mai 2021
546 >
Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

peux tu poster (avec les balises) les codes que tu as essayé
Messages postés
12
Date d'inscription
dimanche 19 janvier 2020
Statut
Membre
Dernière intervention
22 avril 2021
4
Bonjour a tous,

Dans le debugger de mon PyScipter le message s'affiche correctement mais
pour que le message s'affiche dans le shell il faut faire suivre
sys.stdout.write(char) par sys.stdout.flush()
Messages postés
15950
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 mai 2021
546
En effet, merci