Effacement

punisher0785
Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021
- Modifié le 20 avril 2021 à 19:39
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
- 22 avril 2021 à 11:52
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

Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596
20 avril 2021 à 19:36
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

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

21 avril 2021 à 10:46
Désolé, je suis nouveau sur le site. Merci de me l'avoir dit
0
Gandalfix
Messages postés
29
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 mars 2022
3
21 avril 2021 à 05:34
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.
1
punisher0785
Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

21 avril 2021 à 10:49
J'ai testé mais cela ne marche pas. Mais merci quand même.
0
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596
21 avril 2021 à 09:05
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"
?
0
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596
21 avril 2021 à 11:30
Si le code de Gandalfix ne fonctionne pas, effectue les 2 recherches que je t'ai proposées
0
punisher0785
Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

21 avril 2021 à 11:35
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596
21 avril 2021 à 11:37
Dans la recherche en anglais, il y a https://www.csestack.org/clear-python-interpreter-console/

As tu essayé?
0
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596
21 avril 2021 à 11:47
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?
0
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596
21 avril 2021 à 11:54
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.

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

21 avril 2021 à 14:11
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.
0
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596
21 avril 2021 à 20:54
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?
0
punisher0785
Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

22 avril 2021 à 10:34
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.
0
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596 > punisher0785
Messages postés
12
Date d'inscription
mardi 20 avril 2021
Statut
Membre
Dernière intervention
7 mai 2021

Modifié le 22 avril 2021 à 11:52
peux tu poster (avec les balises) les codes que tu as essayé
0
hypothetix
Messages postés
24
Date d'inscription
dimanche 19 janvier 2020
Statut
Membre
Dernière intervention
9 mai 2022
5
Modifié le 22 avril 2021 à 10:59
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()
0
Whismeril
Messages postés
17337
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
596
22 avril 2021 à 11:52
En effet, merci
0