IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python - afficher un texte à une coordonnée particulière


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juin 2020
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2020
    Messages : 77
    Points : 41
    Points
    41
    Par défaut Python - afficher un texte à une coordonnée particulière
    Bonjour,

    Je débute l'étude de Python dans le cadre de mon BTS.
    Dans un exercice d'addition de matrices, il faut que l'on fasse l'affichage de la position à laquelle les valeurs vont être saisies.
    Lorsque je lance le script j'ai des flèches qui signalent la gauche du terminal.

    ←7←[1;1f.←8←7←[1;1f.←8←7←[1;7f.←8←7←[1;7f.←8

    J'ai testé les deux méthodes que je viens de poster sur Stackoverflow.
    http://https://stackoverflow.com/questions/63773806/python-printing-string-elements-on-terminal-at-certain-position

    Ci-dessous le lien vers mon script:
    https://hastebin.com/iqelafapul.py


    Est-ce que quelqu'un aurait déjà eu les mêmes difficultés ?
    Pourquoi les éléments ne sont pas affichés dans le terminal ?
    Est-ce qu'il y a une erreur dans le script ?
    Ou est-ce qu'il me faudrait un autre module pour l'affichage ?

    Merci par avance

    Cordialement

    Mathieu

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par __mathieu__ Voir le message
    Je débute l'étude de Python dans le cadre de mon BTS.
    Dans un exercice d'addition de matrices, il faut que l'on fasse l'affichage de la position à laquelle les valeurs vont être saisies.
    Print affiche à la position courante sur le terminal.
    Si vous voulez afficher quelque chose à une position particulière, çà va dépendre du terminal et il y a des bibliothèques pour le faire (sur de vrais terminaux pas sous IDLE).

    Vous avez deux solutions: vous utilisez print normalement pour afficher le numéro de ligne/colonne à saisir (visuellement c'est pas top mais çà marche) puis plus tard vous allez apprendre à utiliser une interface graphique pour réaliser des interactions plus sympa.

    Soit à l'exercice d'addition de matrices vous ajoutez celui de la recherche d'un module externe à ajouter à votre environnement Python pour faire "plus joli" sur un terminal.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juin 2020
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2020
    Messages : 77
    Points : 41
    Points
    41
    Par défaut
    Bonjour Monsieur,

    Merci beaucoup pour votre retour.

    Pour la première solution que vous citez,
    vous utilisez print normalement pour afficher le numéro de ligne/colonne à saisir (visuellement c'est pas top mais çà marche)
    c'est ce que j'ai bien tenté et j'ai repris la correction de la prof pour m'assurer ne pas avoir réalisé une erreur.

    En exécutant ce code je n'obtiens pas de déplacement sur le terminal.
    J'ai testé avec Sublime Text et PyCharm sur PC et Sublime Text sur Mac.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    L = 6
    H = 2
     
    while nbColumns >= 5:
        nbColumns = int(input("Enter the number of columns "))
     
    while nbLines >= 6:
        nbLines = int(input("Enter the number of lines "))
     
    for x in range(0, nbColumns):
        for y in range(0, nbLines):
            print(f"\033[{y*H+1};{x*L+1}H.")
            print(f"\033[{y*H+1};{(x+nbColumns+1)*L}H.")

    Concernant votre seconde recommandation
    vous ajoutez celui de la recherche d'un module externe à ajouter à votre environnement Python pour faire "plus joli" sur un terminal
    , est-ce que vous auriez un module externe que vous recommanderiez pour les calculs matriciels ?

    Merci par avance

    Cordialement

    Mathieu

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par __mathieu__ Voir le message
    En exécutant ce code je n'obtiens pas de déplacement sur le terminal.
    J'ai testé avec Sublime Text et PyCharm sur PC et Sublime Text sur Mac.
    C'est que votre terminal ne sait pas interpréter la séquence d’échappement \033[{y*H+1} supposée déplacer le "curseur" à la position où afficher.
    Côté Python, c'est juste une chaine de caractère (que le "terminal" interprètera ou pas).
    Si ce code fonctionne sur la machine du professeur, c'est qu'il utilise un environnement différent du votre (et vous irez plus vite à lui demander plutôt que d'essayer de le deviner).

    Concernant votre seconde recommandation , est-ce que vous auriez un module externe que vous recommanderiez pour les calculs matriciels ?
    numpy? Mais si vous débutez, vous devez apprendre à écrire vos boucles imbriquées et vos listes de listes...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juin 2020
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2020
    Messages : 77
    Points : 41
    Points
    41
    Par défaut
    Merci beaucoup

    Je vais effectivement poser la question au professeur et regarder des tutos sur Numpy avant de me lancer dans les exercices sur les matrices.

    Désolé mais j'aurais une dernière question , j'espère ne pas trop vous importuner.
    Ce matin j'ai cherché une autre manière pour afficher la matrice avec les points pour chaque élément et je suis parvenu à ces lignes de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for y in range(0, nbLines):
        for x in range(0, nbColumns):
            print("{0}\t".replace('\t', ' ' * 5).format('.'), end='')
            if x == nbColumns -1:
                print('')
                print("\n")
    Cela m'a permis de pouvoir afficher les points comme voulu.

    Nom : prompt.png
Affichages : 381
Taille : 18,6 Ko

    Est-ce qu'il y aurait un moyen avec print (ou autre méthode) pour faire venir le curseur de saisie du prompt sur un point spécifique ?
    En effet avec les sauts de lignes je me retrouve sous la matrice pour la suite.
    J'aurais aimé refaire venir le curseur afin de relancer les mêmes lignes de code, tout en demandant à l'utilisateur de saisir les coefficients de la matrice.
    Comme cela j'ai l'affichage des points dans une matrice vide, puis la saisie par l'utilisateur et son affichage.

    Merci par avance et encore merci pour votre aide.

    Cordialement

    Mathieu

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par __mathieu__ Voir le message
    Est-ce qu'il y aurait un moyen avec print (ou autre méthode) pour faire venir le curseur de saisie du prompt sur un point spécifique ?

    La seule chose que vous pouvez éventuellement faire avec print, c'est effacer la ligne courante (revenir au début et ré-écrire par dessus).
    Pour faire aller le curseur sur une ligne précédente, il faut le demander au terminal

    Une séquence spéciale comme "\033[{y*H+1}... H" est supposée fonctionner sur l'émulation d'un terminal VT100.
    Sur Windows, vous avez une bibliothèque colorama qui sait les traduire pour le terminal - la chose qui apparait lorsqu'on lance cmd.exe.
    Sur OSX j'en sais rien... vous avez certainement curses (mais il va falloir apprendre à jouer avec).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juin 2020
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2020
    Messages : 77
    Points : 41
    Points
    41
    Par défaut
    Encore merci

    Bonne journée

    Cordialement

    Mathieu

  8. #8
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    curses n'est pas très difficile à utiliser et on peut l'installer aussi sous windows pour l'utiliser dans une invite de commande. Sous windows il faut installer windows-curses par pip pour disposer de la bibliothèque curses.

    Voici un exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import curses
    screen = curses.initscr()
    # Mettre à jour le  buffer, ajouter du texte à différentes positions
    screen.addstr(0, 0, "Ce texte est affiché à la position (0, 0)")
    screen.addstr(3, 1, "Essayer des accents: héhé ça marche !")  # Python 3 pour unicode
    screen.addstr(5, 10, "X" )
    screen.addch(10, 20, "Y")
    # Les changements sont envoyés dans le buffer d'écran et 
    # affichés après appel au  refresh() pour mise à jour
    screen.refresh()
    #temps d'affichage en millisecondes   
    curses.napms(30000)
    # on revient à l'affichage précédent
    curses.endwin()
    et voici le résultat :

    Nom : curses_python_windows.PNG
Affichages : 358
Taille : 8,1 Ko


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  9. #9
    Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juin 2020
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2020
    Messages : 77
    Points : 41
    Points
    41
    Par défaut
    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher un texte une fois qu'on à cliquer un bouton input type="submit"
    Par Alexcontact dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/03/2014, 16h15
  2. [MySQL] Afficher du texte UTF-8 sur une page encodée en ISO
    Par MiJack dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/02/2006, 18h37
  3. Réponses: 2
    Dernier message: 05/01/2006, 00h08
  4. Afficher du texte area par dessus une image
    Par Battosaiii dans le forum Composants
    Réponses: 3
    Dernier message: 14/12/2005, 01h35
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo