Encadrement

Écrire une fonction encadrer permettant d’encadrer un texte de plusieurs lignes, avec différents types de bordures, un écartement et une justification réglable.
Aide

Il existe des méthodes de chaînes de caractères qui peuvent aider :

  • .ljust()
  • .rjust()
  • .center()

 

La signature et la documentation de la fonction sont données ci-dessous :

def encadrer(lst_lignes, bord = 0, type = 0, justif = 0):
    """ Encadre une liste de lignes de texte
        avec des caractères de boite :
            Box-drawing characters : https://en.wikipedia.org/wiki/Box-drawing_character
                type 0 : '─', '│', '┐', '┌', '└', '┘'
                type 1 : '━', '┃', '┓', '┏', '┗', '┛'
                type 2 : '═', '║', '╗', '╔', '╚', '╝'

        justif : 0=gauche, 1=centre, 3=droite
        bord : nombre d'espaces entre le texte et le cadre

        Renvoie une liste de lignes :
        ['texte',     ==>    ['┌────────┐',
         ' à',                '│texte   │',
         'encadrer']          '│ à      │',
                              '│encadrer│',
                              '└────────┘']
    """

 

Par exemple :

lst_lignes = ['texte',
              ' à',
              'encadrer']
print('\n'.join(encadrer(lst_lignes, bord = 0, type = 0, justif = 0)))
print('\n'.join(encadrer(lst_lignes, bord = 1, type = 0, justif = 0)))
print('\n'.join(encadrer(lst_lignes, bord = 0, type = 1, justif = 0)))
print('\n'.join(encadrer(lst_lignes, bord = 0, type = 2, justif = 0)))
print('\n'.join(encadrer(lst_lignes, bord = 0, type = 0, justif = 1)))
print('\n'.join(encadrer(lst_lignes, bord = 0, type = 0, justif = 2)))

doit afficher ceci :

┌────────┐
│texte   │
│ à      │
│encadrer│
└────────┘
┌──────────┐
│          │
│ texte    │
│  à       │
│ encadrer │
│          │
└──────────┘
┏━━━━━━━━┓
┃texte   ┃
┃ à      ┃
┃encadrer┃
┗━━━━━━━━┛
╔════════╗
║texte   ║
║ à      ║
║encadrer║
╚════════╝
┌────────┐
│ texte  │
│    à   │
│encadrer│
└────────┘
┌────────┐
│   texte│
│       à│
│encadrer│
└────────┘

 

 

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *