2
votes

Grille d'entiers

J'ai besoin de faire une grille avec les nombres générés par le code, mais je ne comprends pas comment les aligner dans les colonnes. Y a-t-il un paramètre d'impression ou quelque chose d'autre qui pourrait m'aider?

#main()
a=0
b=0
for i in range(1, 13):
    a=a+1
    print("  ")
    b=b+1
    for f in range(1,13):
        print(f*b, end="  ")

Ma sortie pour le moment:

 entrez la description de l'image ici a >


4 commentaires

Pouvez-vous montrer votre sortie?


Bien sûr, lien


Max: ajoutez le lien à votre question ou, mieux encore, copiez et collez simplement le résultat dans votre question sous forme de texte.


@martineau ok merci


3 Réponses :


3
votes

Je recommanderais d'utiliser les f-strings de python:

   1   2   3   4   5   6   7   8   9  10  11  12
   2   4   6   8  10  12  14  16  18  20  22  24
   3   6   9  12  15  18  21  24  27  30  33  36
   4   8  12  16  20  24  28  32  36  40  44  48
   5  10  15  20  25  30  35  40  45  50  55  60
   6  12  18  24  30  36  42  48  54  60  66  72
   7  14  21  28  35  42  49  56  63  70  77  84
   8  16  24  32  40  48  56  64  72  80  88  96
   9  18  27  36  45  54  63  72  81  90  99 108
  10  20  30  40  50  60  70  80  90 100 110 120
  11  22  33  44  55  66  77  88  99 110 121 132
  12  24  36  48  60  72  84  96 108 120 132 144

Voici le résultat:

for i in range(1, 13):
    print(''.join(f"{i*j: 4}" for j in range(1,13)))

La forme la plus courante est d'utiliser presque toute expression arbitraire entre les accolades. Cela peut inclure des valeurs de dictionnaire, des appels de fonction, etc. L'utilisation ci-dessus spécifie le formatage après les deux points. L'espace avant le 4 indique que le caractère de remplissage doit être un espace, et le 4 indique que l'expression entière doit prendre 4 caractères au total. Pour plus d'informations, consultez la documentation . P >


0 commentaires

2
votes

Étant donné que la largeur de chaque cellule de la grille est stockée sous la forme w , ce qui pour l'extrait ci-dessus suffit à 4, une grille régulièrement espacée peut être imprimée en utilisant

   1   2   3   4   5   6   7   8   9  10  11  12
   2   4   6   8  10  12  14  16  18  20  22  24
   3   6   9  12  15  18  21  24  27  30  33  36
   4   8  12  16  20  24  28  32  36  40  44  48
   5  10  15  20  25  30  35  40  45  50  55  60
   6  12  18  24  30  36  42  48  54  60  66  72
   7  14  21  28  35  42  49  56  63  70  77  84
   8  16  24  32  40  48  56  64  72  80  88  96
   9  18  27  36  45  54  63  72  81  90  99 108
  10  20  30  40  50  60  70  80  90 100 110 120
  11  22  33  44  55  66  77  88  99 110 121 132
  12  24  36  48  60  72  84  96 108 120 132 144

Son la sortie est

w = 4
a, b = 0, 0
for i in range(1, 13):
    a, b = a+1, b+1
    for f in range(1, 13):
        print(('{:'+str(w)+'}').format(f*b), end='')
    print('')


0 commentaires

1
votes

Vous pouvez référencer les valeurs d'argument de mot-clé transmises à la méthode str.format () dans la chaîne de format par nom via {name} . Voici un exemple de cela où la valeur référencée est calculée (par opposition à être une constante):

   1   2   3   4   5   6   7   8   9  10  11  12
   2   4   6   8  10  12  14  16  18  20  22  24
   3   6   9  12  15  18  21  24  27  30  33  36
   4   8  12  16  20  24  28  32  36  40  44  48
   5  10  15  20  25  30  35  40  45  50  55  60
   6  12  18  24  30  36  42  48  54  60  66  72
   7  14  21  28  35  42  49  56  63  70  77  84
   8  16  24  32  40  48  56  64  72  80  88  96
   9  18  27  36  45  54  63  72  81  90  99 108
  10  20  30  40  50  60  70  80  90 100 110 120
  11  22  33  44  55  66  77  88  99 110 121 132
  12  24  36  48  60  72  84  96 108 120 132 144

Sortie:

mx = 12
w = len(str(mx*mx)) + 1
for b in range(1, mx+1):
    for f in range(1, mx+1):
        print(('{:{w}}').format(f*b, w=w), end='')
    print('')


0 commentaires