Le 4 mai 2021, la plateforme Yahoo Questions/Réponses fermera. Elle est désormais accessible en mode lecture seule. Aucune modification ne sera apportée aux autres sites ou services Yahoo, ni à votre compte Yahoo. Vous trouverez plus d’informations sur l'arrêt de Yahoo Questions/Réponses et sur le téléchargement de vos données sur cette page d'aide.

? a posé la question dans Informatique et internetProgrammation · il y a 2 semaines

Comment mettre en gras un texte sur python?

Bonjour les programmateurs, 

J'ai mon texte comme cela sur python :  'afficher en gras' 

quel caractère rajouter si je veux que celui-ci soit en gras. 

et deuxième petite question comment faire un espace ? 

A l'avance merci 

nice day !

3 réponses

Évaluation
  • Anonyme
    il y a 1 semaine

    Bonjour, toi !

    Attachment image
  • oyubir
    Lv 6
    il y a 1 semaine

    Il n'y a pas de solution générale.

    Ça dépend de où vous voulez afficher des choses, et vous ne le dites pas.

    Est-ce dans un notebook jupyter ? Dans ce cas le mieux est d'utiliser la fonction d'affichage du notebook, et non le print standard :

    from IPython.display import display, Markdown

    display(Markdown("**afficher en gras**"))

    Est-ce dans une interface graphique quelconque (pytk, qt, ...) ?

    Dans ce cas il faut utiliser l'API de cette interface graphique pour changer le style du texte. Ou, quand l'interface le permet, si le texte peut être en html, mettre un <b>...</b> autour du texte.

    Est-ce dans le terminal, avec la fonction "print" ?

    Dans ce cas là, c'est beaucoup plus compliqué. Il faut comprendre ce qu'est un terminal. La fenêtre qu'on appelle "terminal" de nos jours, est un émulateur de terminal. Tout ça date du temps où, littéralement, il y avait un ordinateur, qui exécutait du code python, sur lequel on branchait un terminal (le minitel, par exemple, était un terminal), qui ne faisait que recevoir et envoyer des caractères.

    (encore avant l'époque des terminaux, c'était des imprimantes. D'où le nom "print". Quand le programme exécute print("hello"), cela envoie 5 caractère, h, e, l, l, et o sur un fil série à une imprimante, qui imprime ce texte. Plus tard ont été inventés des imprimantes sans papier, avec un écran, qu'on appelait terminal)

    Donc, ce n'est pas python qui décide comment afficher les choses. En théorie, ce n'est même pas l'ordinateur. C'est le terminal.

    Les ordinateurs modernes ne fonctionnent plus comme cela. Mais presque, puisque c'est toujours un "émulateur de terminal" qui fait semblant d'être un terminal externe, mais affiche le texte sur l'écran de l'ordinateur. La structure n'a pas changé : le programme qui fait un print("afficher en gras") n'est pas celui (le terminal) qui affiche le texte.

    Les terminaux (même du temps des ces terminaux verts physiques) savent afficher du gras. Mais cela se fait en leur envoyant des instructions "de contrôle" pour leur dire "le prochain texte devra être en gras". Et ces instructions dépendent du terminal. Autant, pour afficher "A" il suffit d'envoyer 65 au terminal (le code ascill de A), et ça marche pour tous les terminaux qui existent. Autant pour lui dire "le prochain doit être en gras", il n'y a pas de norme.

    L'autre réponse que vous avez eue (copier-coller partiel d'une réponse d'un autre site) ne fait que allusion à cela, mais manifestement sans en comprendre un traitre mot, car le code important est celui qui n'a pas été recopié.

    Le ce que fait cette réponse, c'est afficher '\033[1m' avant le texte, et '\033[m' après.

    \033 est la notation pour envoyer le caractère de code ascii 27 (033 en octal), cad "escape". Comme c'est un caractère non imprimable (il n'a pas de façon de le dessiner), certains terminaux s'en servent de préfixe pour signaler "ce qui suit n'est pas du texte à afficher, mais des instructions sur la façon de l'afficher".

    \033[ est le préfixe pour le style du texte.

    1 est le style gras

    m est le marqueur de fin de l'instruction de contrôle (ce qui suit le m sera à nouveau considéré comme du texte à afficher).

    un \033[ suivi dun m, sans rien entre les 2, veut dire "retour au style par défaut".

    Donc

    print("\033[1mafficher en gras\033[m")

    va afficher en gras, si l'affichage se fait sur un terminal qui comprend ces instructions \033

    Ces instructions sont celles d'une marque de terminal des années 1970, le VT100. Mais cela s'est un peu standardisé, ce qui fait que la plupart des terminaux postérieurs, même d'autres marques, comprennent ces instructions. Et c'est notamment le cas, qui vous intéressent (car je suppose que vous n'avez pas de terminal physique), des "émulateurs de terminaux", c'est à dire des fenêtres de terminal sur les ordinateurs actuels.

    (la partie non copiée collée de l'autre réponse étalt la définition du color.BOLD="\033[1m", ce qui revient donc au même)

    Je l'utilise très souvent

    Mais je le fais quand je code pour moi-même, en sachant très bien quand je vais exécuter le code.

    Le problème, c'est que vous ne pouvez pas supposer à l'avance quel terminal va exécuter le code.

    Est-ce une fenêtre de commande windows ? Dans ce cas l'interprétation de ces codes n'est pas forcément activée.

    Est-ce un client ssh pour exécuter du code à distance ? Comprenez alors que ce n'est pas la machine qui exécute le code qui affiche le texte. Tout dépend du client ssh, et s'il est en mode texte, du terminal dans lequel il tourne.

    Est-ce un notebook ? Tous les notebook ne supportent pas ces instructions.

    Est-ce un serveur web (qui redirige la sortie vers un navigateur) ? Dans ce cas, ces instructions de contrôle n'ont aucun sens.

    Il y a des librairies pour controler les terminaux, qui ne font pas l'hypothèse que c'est forcément un émulateur de VT100. Mais ça ne se fait pas en une ligne.

    Bref, c'est pas un petit sujet. Si vous voulez contrôler la façon dont le texte est affiché, il ne faut pas utiliser print, puisque print sert exactement à déléguer ça à un "terminal".

    Mais faire votre propre interface d'affichage (tk, html, ...)

    Tout ceci étant dit, si vous n'avez pas envie de vous prendre la tête, que vous savez à l'avance que le code sera exécuté toujours dans les mêmes conditions (sur le même terminal), le moyen le plus rapide, qui a le plus de chances de marcher, est celui que j'ai donné plus haut: afficher \033[1m avant le truc en gras, et \033[m après

    (vous pouvez jouer à changer ce 1 en des tas d'autres nombres, pour changer la couleur, souligner, barrer, etc.

    Par exemple print("\033[31mrouge\033[mnoir") affiche un mot en rouge et l'autre en noir. Si le terminal d'affichage est compatible vt100/ansi, mais je ne refais pas mon laius)

  • Lv 7
    il y a 2 semaines

    color.BOLD dans ton print mais il te faut définir toute ta classe de couleurs avant.

    Sinon, un espace est juste un " " dans ton print.

Vous avez d’autres questions ? Pour obtenir des réponses, posez vos questions dès maintenant.