2013-11-23 41 views
0

如何將給定範圍內的所有數字打印到給定數量的列中,其中每個列的寬度爲6個字符,並且列之間有空格?我試圖用格式:我可以在Python中格式化n個數字

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

卻發現因爲我需要N,更一般的代碼格式,其中n是由用戶輸入給出的數字,而不是兩個這種做法是行不通的。那麼我可以使用格式打印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 
+0

請給出一些示例輸入和期望輸出 – PasteBT

回答

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