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 :

Alignement en colonnes d'un tableau de valeurs


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 56
    Par défaut Alignement en colonnes d'un tableau de valeurs
    Bonjour à tous,
    je cherche à imprimer un tableau présenté sous forme de colonnes toutes de la même largeur, chaque colonne pouvant contenir un nombre entier (signé - si négatif) inférieur à 999.
    Je mets le petit code que j'ai écrit mais je ne trouve pas comment présenter le résultat du calcul b*b-4*c bien en colonne aligné à droite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    n=0
    for b in range(1,7):
        for c in range(1,7):
            print(b,b*b-4*c,end='')
            if b*b-4*c>0:
               n=n+1
        print(' ')
    print(n,n/36)
    Python imprime :
    *** Remote Interpreter Reinitialized ***
    1 -31 -71 -111 -151 -191 -23
    2 02 -42 -82 -122 -162 -20
    3 53 13 -33 -73 -113 -15
    4 124 84 44 04 -44 -8
    5 215 175 135 95 55 1
    6 326 286 246 206 166 12
    17 0.4722222222222222
    >>>
    D'avance merci pour l'aide apportée.
    Pierre

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2018
    Messages : 29
    Par défaut
    Tu peux regarder vers la fonction format :
    https://docs.python.org/fr/3/library...tml#formatspec
    Bon, la doc n'est pas très explicite, tu devrais trouver ton bonheur dans les exemples suivants:
    https://pyformat.info/

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 56
    Par défaut Voici la solution recherchée
    https://pyformat.info/ m'a donné l'exemple pour arranger mon script que voici définitif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    n=0
    for b in range(1,7):
        for c in range(1,7):
            print(b,'{:4d}'.format(b*b-4*c),end='')
            if b*b-4*c>0:
               n=n+1
        print(' ')
    print(n,n/36)
    et la présentation nettement plus claire :
    *** Remote Interpreter Reinitialized ***
    1 -31 -71 -111 -151 -191 -23
    2 02 -42 -82 -122 -162 -20
    3 53 13 -33 -73 -113 -15
    4 124 84 44 04 -44 -8
    5 215 175 135 95 55 1
    6 326 286 246 206 166 12
    17 0.4722222222222222
    >>>
    Merci beaucoup et bon weekend.

  4. #4
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Etonnant : si tu mets end = '\t' dans la boucle, cela change tout.

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2015
    Messages : 56
    Par défaut end={\t'?
    J'ai essayé en écrivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print(b,'{:4d}'.format(b*b-4*c),end='\t')
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print(b,b*b-4*c,end='\t')
    Dans les deux cas les résultats sont étranges et ne correspondent pas au tableau que je cherche à obtenir.

    Cette présentation est destinée à des élèves qui tracent des tableaux à double entrée en simulant le lancer de deux dés par exemple.
    Avec ce petit script Python, programmable sur Numworks, les élèves n'ont pas trop de difficulté, surtout si le tableau est bien présenté.

    Merci de repréciser l'idée pour utiliser end='\t'.
    A+

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2018
    Messages : 29
    Par défaut
    "\t" est la caractère tabulation
    string.whitespace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import string
    string.whitespace
    Comme lorsque entrée dans un éditeur de texte, une tabulation va aligner les éléments (tant que leur taille est inférieure à une tabulation)

    Je t'invite à découper le code et bien regarder ce que chaque ligne fait,
    notamment la ligne :
    qui n'est pas conforme à ton objectif. (je pense)
    Ou simplement la remplacer par
    voir ce que cela donne

    Peut-être que une solution plus simple serait de composer la ligne de texte et faire le "print" ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ma_ligne = ""
    ma_ligne += str(b)
    ma_ligne += "{:4d}".format(b*b+4*c1)
    ma_ligne += "{:4d}".format(b*b+4*c2)
    ...
    print(ma_ligne)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/01/2010, 14h28
  2. [DisplayTag] Colonne de tableau à 2 valeurs
    Par DarkHunter80 dans le forum Taglibs
    Réponses: 1
    Dernier message: 06/01/2010, 09h11
  3. Tableau : forcer une largeur de colonne identique, sans préciser de valeur
    Par Nyphel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 20/08/2007, 09h07
  4. problème alignement de colonnes d'un tableau
    Par freija dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/08/2006, 15h34
  5. Alignement de colonne d'un tableau
    Par G_Kill dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/04/2005, 21h17

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