我可以在Python中格式化n个数字吗?

时间:2013-11-23 21:16:29

标签: python-3.x

如何将给定范围内的所有数字打印到给定的列数,其中每个列的宽度为6个字符,并且列之间有空格?我试着使用格式:

for i in range(0,nolines):
    for j in range(0,nocolums):
         print("{0:6}{1:6}".format(number1,number2))

但发现这种方法不起作用,因为我需要更通用的代码来格式化n,其中n由用户输入给出,数字而不是2。那么我可以使用格式打印n个数字吗?

例如,如果输入是

min = 20, max = 104, numbers on one line = 10

程序应该打印

   20    21    22    23    24    25    26    27    28    29 
   30    31    32    33    34    35    36    37    38    39 
   40    41    42    43    44    45    46    47    48    49 
   50    51    52    53    54    55    56    57    58    59 
   60    61    62    63    64    65    66    67    68    69 
   70    71    72    73    74    75    76    77    78    79 
   80    81    82    83    84    85    86    87    88    89 
   90    91    92    93    94    95    96    97    98    99 
  100   101   102   103   104

2 个答案:

答案 0 :(得分:2)

您可以使用str.rjust方法:

lines = [
    [1, 2, 3],
    [111, 222, 333],
]

for line in lines:
    for n in line:
        print(str(n).rjust(6), end='')

    print()

答案 1 :(得分:1)

def print_range(start, stop, ncolumns, width=6):
    for i in range(start, stop, ncolumns):
        print(' '.join(['{:{}d}'.format(j, width)
                        for j in range(i, min(i + ncolumns, stop))]))

示例:

>>> print_range(20, 105, ncolumns=10)
    20     21     22     23     24     25     26     27     28     29
    30     31     32     33     34     35     36     37     38     39
    40     41     42     43     44     45     46     47     48     49
    50     51     52     53     54     55     56     57     58     59
    60     61     62     63     64     65     66     67     68     69
    70     71     72     73     74     75     76     77     78     79
    80     81     82     83     84     85     86     87     88     89
    90     91     92     93     94     95     96     97     98     99
   100    101    102    103    104