Présentation propre d'une interpolation.

3 réponses
Avatar
Dominique
Bonjour,

Soit une variable (x et y sont les valeurs Í  interpoler)

res=['x1 ', 12.456, 'y1 ', 12.96524], ['x ', 13.4587, 'y ',
13.223527289798024], ['x2 ', 18.6548, 'y2 ', 14.562]

(le tout sur une ligne, bien sͻr)

Si j'appelle ma variable, elle se présente (avec Spyder) Í  peu près
correctement :

res
Out[73]:
(['x1 ', 12.456, 'y1 ', 12.96524],
['x ', 13.4587, 'y ', 13.223527289798024],
['x2 ', 18.6548, 'y2 ', 14.562])

Mais si je passe par print, ma variable apparaͮt sur une seule ligne.

print(res)
(['x1 ', 12.456, 'y1 ', 12.96524], ['x ', 13.4587, 'y ',
13.223527289798024], ['x2 ', 18.6548, 'y2 ', 14.562])

J'ai alors deux questions. Comment forcer le print Í  se présenter sur 3
lignes. Et, crise sur le rÍ¢teau, comment avoir mes résultats alignés Í 
gauche comme suit (si ça passe dans usenet...) :

(['x1 ', 12.456, 'y1 ', 12.96524],
['x ', 13.4587, 'y ', 13.223527289798024],
['x2 ', 18.6548, 'y2 ', 14.562])

En vous remerciant et vous souhaitant une bonne soirée,

Dominique

3 réponses

Avatar
Benoit Izac
Bonjour,
Le 01/05/2022 Í  17:37, Dominique a écrit dans le message
<t4m9ft$f1g$ :
Soit une variable (x et y sont les valeurs Í  interpoler)
res=['x1 ', 12.456, 'y1 ', 12.96524], ['x ', 13.4587, 'y ',
13.223527289798024], ['x2 ', 18.6548, 'y2 ', 14.562]
(le tout sur une ligne, bien sͻr)
Si j'appelle ma variable, elle se présente (avec Spyder) Í  peu près
correctement :
res
Out[73]:
(['x1 ', 12.456, 'y1 ', 12.96524],
['x ', 13.4587, 'y ', 13.223527289798024],
['x2 ', 18.6548, 'y2 ', 14.562])
Mais si je passe par print, ma variable apparaͮt sur une seule ligne.
print(res)
(['x1 ', 12.456, 'y1 ', 12.96524], ['x ', 13.4587, 'y ',
13.223527289798024], ['x2 ', 18.6548, 'y2 ', 14.562])
J'ai alors deux questions. Comment forcer le print Í  se présenter sur
3 lignes. Et, crise sur le rÍ¢teau, comment avoir mes résultats alignés
Í  gauche comme suit (si ça passe dans usenet...) :
(['x1 ', 12.456, 'y1 ', 12.96524],
['x ', 13.4587, 'y ', 13.223527289798024],
['x2 ', 18.6548, 'y2 ', 14.562])

Réponse Í  la première question :
import pprint
pprint.pprint(res)



(['x1 ', 12.456, 'y1 ', 12.96524],
['x ', 13.4587, 'y ', 13.223527289798024],
['x2 ', 18.6548, 'y2 ', 14.562])
Pour la deuxième, c'est beaucoup plus compliqué, il faudrait créer une
classe et implémenter «Â __str__ » pour faire ce que tu veux (avec des
f-strings par exemple).
--
Benoit Izac
Avatar
Dominique
Le 01/05/2022 Í  20:37, Benoit Izac a écrit :
Réponse Í  la première question :
import pprint
pprint.pprint(res)



(['x1 ', 12.456, 'y1 ', 12.96524],
['x ', 13.4587, 'y ', 13.223527289798024],
['x2 ', 18.6548, 'y2 ', 14.562])

Bon, j'ai déjÍ  appris pprint. Merci :-)
Pour la deuxième, c'est beaucoup plus compliqué, il faudrait créer une
classe et implémenter «Â __str__ » pour faire ce que tu veux (avec des
f-strings par exemple).

LÍ , ça va dépasser mes petites connaissances. Je vais repousser Í  plus tard.
Merci encore pour le pprint,
Dominique
Avatar
Nicolas
Le 01/05/2022 Í  21:45, Dominique a écrit :
Le 01/05/2022 Í  20:37, Benoit Izac a écrit :
Réponse Í  la première question :
import pprint
pprint.pprint(res)



(['x1 ', 12.456, 'y1 ', 12.96524],
  ['x ', 13.4587, 'y ', 13.223527289798024],
  ['x2 ', 18.6548, 'y2 ', 14.562])

Bon, j'ai déjÍ  appris pprint. Merci :-)
Pour la deuxième, c'est beaucoup plus compliqué, il faudrait créer une
classe et implémenter «Â __str__ » pour faire ce que tu veux (avec des
f-strings par exemple).

LÍ , ça va dépasser mes petites connaissances. Je vais repousser Í  plus
tard.

C'est une bonne occasion d'améliorer tes "petites connaissances" ;)
C'est effectivement plus compliqué que juste un appel Í  pprint() mais
pas tant que ça.
Le principe de base est de parser tous les clés X, et de mesurer la
"plus grande" (en nombre de caractères). Mémoriser ce nombre pour plus tard.
Faire la même chose avec les valeurs de X, les clés de Y et les valeur de Y.
Ensuite, il ne reste plus qu'Í  créer la/les chaine(s) de caractères avec
le formatage voulu en prenant en compte les données calculées précédemment.
Petit rappel : " " * 20 crée une chaine de 20 espaces.
On peut donc faire quelque chose du genre :
S = X_Name + "," + " " * (Max_X_Name_Length - len(X_Name)) + ...
Bonne journée,
Nicolas
Merci encore pour le pprint,
Dominique