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 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 - 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 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
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 84 Date d'inscription vendredi 12 juin 2020 Statut Non membre Dernière intervention 18 avril 2024 7
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 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
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 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
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 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
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 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
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 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
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 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
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 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656 > 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 191 Date d'inscription dimanche 19 janvier 2020 Statut Membre Dernière intervention 24 avril 2024 6
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 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
22 avril 2021 à 11:52
En effet, merci
0
Rejoignez-nous