Construire un tableau de valeurs en Python est chose aisée à l’aide d’une boucle “for”… Aisé ? Réellement ? Obtenir les images de plusieurs valeurs l’est, mais construire un beau tableau l’est-il ? Je ne vais pas vous parler de LaTeX car je suis conscient que tout le monde ne passe pas par ce langage de programmation. Je vais rester en Python pur.

La boucle “for” pour obtenir les valeurs

Nous allons considérer une fonction quelconque f. Alors, pour calculer l’image des nombres entiers compris entre -5 et 5 (par exemple) est facile:

def f(x):
    return -300*x + 1

for x in range(-5,6):
    print( x , f(x) )

Quand on ne s’attarde pas trop sur l’affichage, tout devient très simple…

Mais si l’on souhaite que l’affichage soit plus soigné, c’est autre chose!

Construire un tableau de valeurs de fonctions en Python en formatant l’affichage

Quand j’écris “soigner l’affichage”, je veux dire obtenir ceci par exemple:

tableau de valeurs construit en Python

Il sera nécessaire, pour obtenir ce résultat, d’utiliser le formatage de chaînes de caractères… et un peu de malice! Pour rappel, je vous parle de formatage de chaînes de caractères sur cette page.

Voici un programme possible:

def f(x):
    return -300*x + 1
    
def tab(a,b):
    L = [ f(x) for x in range(a,b+1) ]
    M = max( [ abs(x) for  x in L ])
    w = len( str(M) ) # largeur minimale des cellules du tableau
    if w < 4:
        w = 4
    if M not in L: # s'il y a un signe "-" devant le nombre le plus "spacieux"
        w += 1
        
    top_line_col = ' ' + '-'*(w+2)
    top_line = top_line_col * ( len(L) + 1 ) # ligne du haut
    
    formatage = '{:^'+str(w+2)+'}' # pour centrer les valeurs sur une colonne de taille w+2
    
    x_line = '|' + formatage.format('x') 
    for x in range(a,b+1):
        x_line += '|' + formatage.format(x) 
    x_line += '|'
    
    y_line = '|' + formatage.format('f(x)') 
    for y in L:
        y_line += '|' + formatage.format(y) 
    y_line += '|'
    
    tab = top_line + '\n' + x_line + '\n' + top_line + '\n' + y_line + '\n' + top_line
    
    return tab

print( tab(-5,5) )

Le bel avantage est ici que la taille des colonnes s’adapte à la grandeur des nombres.


0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x