2014-02-09 67 views
0
s = [0,2,6,4,7,1,5,3] 


def row_top(): 
    print("|--|--|--|--|--|--|--|--|") 

def cell_left(): 
    print("| ", end = "") 

def solution(s): 
    for i in range(8): 
     row(s[i]) 

def cell_data(isQ): 
    if isQ: 
     print("X", end = "") 
     return() 
    else: 
     print(" ", end = "") 


def row_data(c): 
    for i in range(9): 
     cell_left() 
     cell_data(i == c) 

def row(c): 
    row_top() 
    row_data(c) 
    print("\n") 


solution(s) 

我的輸出每兩行有一個空格,當不應該出現時,我不確定它在哪裏創建多餘的行。爲8皇后拼圖創建一個棋盤

輸出是假設是這樣的:

|--|--|--|--|--|--|--|--| 
| | | | | | X| | | 
|--|--|--|--|--|--|--|--| 
| | | X| | | | | | 
|--|--|--|--|--|--|--|--| 
| | | | | X| | | | 
|--|--|--|--|--|--|--|--| 
| | | | | | | | X| 
|--|--|--|--|--|--|--|--| 
| X| | | | | | | | 
|--|--|--|--|--|--|--|--| 
| | | | X| | | | | 
|--|--|--|--|--|--|--|--| 
| | X| | | | | | | 
|--|--|--|--|--|--|--|--| 
| | | | | | | X| | 
|--|--|--|--|--|--|--|--| 

我知道這個棋盤不是很廣場但這只是目前初稿。

+0

http://stackoverflow.com/questions/21654443/ascii-art-in-python-not-printing-in-one-line?一樣嗎? –

+0

閱讀那一個的評論... – pakiboii

+1

好的,但請不要單獨提問每一個小的變化。最好只問一次。 –

回答

0

你還在打印額外的換行符:

def row(c): 
    row_top() 
    row_data(c) 
    print("\n") 

取出明確「」 \ n'`性格:

def row(c): 
    row_top() 
    row_data(c) 
    print() 

或者更好的是,按照我以前的答案更緊密地與打印一關閉|酒吧:

def row(c): 
    row_top() 
    row_data(c) 
    print('|') 
1

這裏是一個替代實現:

def make_row(rowdata, col, empty, full): 
    items = [col] * (2*len(rowdata) + 1) 
    items[1::2] = (full if d else empty for d in rowdata) 
    return ''.join(items) 

def make_board(queens, col="|", row="---", empty=" ", full=" X "): 
    size = len(queens) 
    bar = make_row(queens, col, row, row) 
    board = [bar] * (2*size + 1) 
    board[1::2] = (make_row([i==q for i in range(size)], col, empty, full) for q in queens) 
    return '\n'.join(board) 

queens = [0,2,6,4,7,1,5,3] 
print(make_board(queens)) 

這導致

|---|---|---|---|---|---|---|---| 
| X | | | | | | | | 
|---|---|---|---|---|---|---|---| 
| | | X | | | | | | 
|---|---|---|---|---|---|---|---| 
| | | | | | | X | | 
|---|---|---|---|---|---|---|---| 
| | | | | X | | | | 
|---|---|---|---|---|---|---|---| 
| | | | | | | | X | 
|---|---|---|---|---|---|---|---| 
| | X | | | | | | | 
|---|---|---|---|---|---|---|---| 
| | | | | | X | | | 
|---|---|---|---|---|---|---|---| 
| | | | X | | | | | 
|---|---|---|---|---|---|---|---| 

現在是很容易通過改變傳遞到行中的字符串來改變板的寬度,空的,滿;我爲每個添加了一個額外的字符,導致(有點)方格板。