-1

I already wrote this exercise in C where I was able to output a well formatted table with the help of printf(%2i) and printf(%3i).

How do I add spaces in Python in front of the numbers to make it look better?

#! python3
# 007.py -  Write a program that prints a multiplication table for numbers up to 12.

print('----------------------------------------')
print('Multiplication Table from 1 - 12')
print('----------------------------------------')
print(' 1  2  3  4  5  6  7  8  9  10  11  12')
print('----------------------------------------')

for i in range(1, 13):
    if i > 1:
        print('\n', end="")

    print(' ' + str(i) + ' |', end="")
    result = i

    for n in range(1, 13):
        result = i * n
        print('  ' + str(result), end="")

print('\n')
print('----------------------------------------')

Output:

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

C Code:

/**
  * Write a program that prints a multiplication table
  * for numbers up to 12.
  * 15.12.2016
  */

#include <stdio.h>

int main(void)
{
  int result;

  printf ("-----------------------------------------------------\n");
  printf ("\tMultiplication Table from 1 - 12\n");
  printf ("-----------------------------------------------------\n");

  printf ("        1   2   3   4   5   6   7   8   9  10  11  12\n");
  printf ("-----------------------------------------------------\n");

  for (int i = 1; i <= 12; ++i)
    {
      if (i > 1)
      {
        printf ("\n");
      }

      printf (" %2i | ", i);
      result = i;

      for (int n = 1; n <= 12; ++n)
      {
        result = i * n;
        printf ("%3i ", result);
      }
    }
    printf ("\n");
    printf ("-----------------------------------------------------\n");

  return 0;
}

Output:

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

3 Answers3

3

But you can use things like %2i in Python, just like in C.

Old way: String Formatting Operations

print(" %2i | " % i)

New way: Format examples

print(" {:2d} | ".format(i))
wildwilhelm
  • 4,809
  • 1
  • 19
  • 24
1

Start here this what you're looking for I believe.

https://docs.python.org/2/library/string.html#format-specification-mini-language

I don't have the time to figure out exactly what you need to do to implement a solution but I'm certain this is the answer you need. Besides the best part of Python is working out a logical solution to a semi abstract problem were plagued with.

rimmram
  • 66
  • 4
0

This way it will look familiar to you:

print ("-----------------------------------------------------")
print ("\tMultiplication Table from 1 - 12")
print ("-----------------------------------------------------")
print ("        1   2   3   4   5   6   7   8   9  10  11  12")
print ("-----------------------------------------------------")

for i in range(1, 13):
    print (" %2i" % i, end = " | ")
    for n in range(1, 13):
        print ("%3i " % (i * n), end="" if n < 12 else "\n")

print ("-----------------------------------------------------")
user508402
  • 496
  • 1
  • 4
  • 19