2016-11-15 72 views
0

我試圖做一個迷你連接4板6列和7行如何一定的字符限制

我在尋找這樣的輸出後打印新行:

1 2 3 4 5 6 
7 8 9 10 11 12 
13 14 15 16 17 18 
19 20 21 22 23 24 
25 26 27 28 29 30 

等到42.

我想在一個列表中。我開始在正確的軌道上這樣

board = [] 
for i in range (1,43): 
    board.append(i) 

我明白一切,我需要在裏面的數字,但我不知道該如何分手的列表,以便打印新的生產線,如每6個號碼我展示的例子。

+1

在您發佈的eaxmple中,最後三行只有5個字符。如果不是這種情況,你可能已經用mod6識別了這個模式。總之,你可以檢查'i'的mod6,當它是0時,執行'print()' –

+1

你使用Python 2還是3? –

回答

0

你在尋找一個二維電路板嗎?如果是這樣,你可以使用列表理解:

board = [[6*j+i for i in range(1,7)] for j in range(7)] 

和打印的內容,像這樣(使用python3):

for row in board: 
    for column in row: 
     print(column, end=' ') 
    print() 


1 2 3 4 5 6 
7 8 9 10 11 12 
13 14 15 16 17 18 
19 20 21 22 23 24 
25 26 27 28 29 30 
31 32 33 34 35 36 
37 38 39 40 41 42 
1

您的主板看起來美麗並不僅僅是正確的,你需要一些格式化爲好。

你可以使用以下兩種:

board = [] 
for i in range(1,43): 
    board.append(i) 
    print('{:>4}'.format(i), end='') 
    if i % 6 == 0: 
     print() 

# 1 2 3 4 5 6 
# 7 8 9 10 11 12 
# 13 14 15 16 17 18 
# 19 20 21 22 23 24 
# 25 26 27 28 29 30 
# 31 32 33 34 35 36 
# 37 38 39 40 41 42 

正如你可以看到我的抑制print()默認結束字符是通過指定end=''換行符。相反,無論何時i % 6 == 0%順便修改),通過調用一個空行print()來打印換行符。至於格式,你可以看看the documentation

而且使一切更人性化,我將它包裝在一個函數

def build_board(cols, rows, sp=2): 
    board = [] 
    l = len(str(cols * rows)) + sp 
    for i in range(1, cols * rows + 1): 
     board.append(i) 
     print('{0:>{1}}'.format(i, l), end='') 
     if i % cols == 0: 
      print() 
    return board 

build_board(8, 17, 3) 

#   1  2  3  4  5  6  7  8 
#   9 10 11 12 13 14 15 16 
#  17 18 19 20 21 22 23 24 
#  25 26 27 28 29 30 31 32 
#  ... 
#  121 122 123 124 125 126 127 128 
#  129 130 131 132 133 134 135 136 
0

這是另一種方法。

import numpy as np 

# convert 1D vector into 2D array 
data = np.array(board).reshape(6, 7) 
print '\n'.join(''.join(str(col)+' ' for col in row) for row in data) 
0

如果你使用的是python 2.x,你可以這樣做,基於EV。 Kounis解決方案:

board = [] 
for i in range (1,43): 
    board.append(i) 
    if i%6 == 0 :print board[i-6:] 

如果董事會已經創建,你只需要打印出來,你可以做這樣的:

for i in range(1,8) :print board[:i*6][(i-1)*6:] 

(板[25:]手段板沒有25個第一值,和 板[:25]表示25個板的第一個值)