在打印输出前添加空格,如C [printf(%2i)]

时间:2016-12-29 15:05:55

标签: python

我已经在C中编写了这个练习,我可以在printf(%2i)和printf(%3i)的帮助下输出格式良好的表格。

如何在数字前面添加Python中的空格以使其看起来更好?

#! 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('----------------------------------------')

输出:

----------------------------------------
 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代码:

/**
  * 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;
}

输出:

        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
-----------------------------------------------------

3 个答案:

答案 0 :(得分:3)

可以在Python中使用像%2i这样的东西,就像在C中一样。

旧方式:String Formatting Operations

print(" %2i | " % i)

新方式:Format examples

print(" {:2d} | ".format(i))

答案 1 :(得分:1)

从这里开始,我相信你正在寻找的东西。

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

我没有时间弄清楚您需要做什么来实施解决方案,但我确定这是您需要的答案。除了Python的最佳部分之外,还有一个逻辑解决方案来解决半抽象问题。

答案 2 :(得分:0)

这样看起来很熟悉:

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 ("-----------------------------------------------------")