2017-05-30 48 views
0

我想繪製一個假的3x3 tic tac腳趾板。我是新來的python,我不明白爲什麼這不起作用。幫助將不勝感激。謝謝!Python繪製一個tic tac腳趾板

def draw(): 
    for i in range(4): 
     board = (" ___ " * 3) 

    for i in board: 
     ("| " * 4).join(board) 

    print(board) 


draw() 

編輯:

最終代碼:

def draw(): 
    board = '' 

    for i in range(-1,6): 

     if i%2==0: 
      board += '|  ' * 4 
      board += '\n|  |  |  |' 

     else: 
      board += ' _____ ' * 3 

     board += '\n' 
    print (board) 

draw() 

輸出:

_____ _____ _____ 
|  |  |  |  
|  |  |  | 
_____ _____ _____ 
|  |  |  |  
|  |  |  | 
_____ _____ _____ 
|  |  |  |  
|  |  |  | 
_____ _____ _____ 

雙編輯:

另一種方式:

def drawsmall(): 
    a = (' ___' * 3) 
    b = ' '.join('||||') 
    print('\n'.join((a, b, a, b, a, b, a,))) 

drawsmall() 

輸出:

___ ___ ___ 
| | | | 
___ ___ ___ 
| | | | 
___ ___ ___ 
| | | | 
___ ___ ___ 
+1

請解釋一下你的意思是 「不工作」。 –

+0

'因爲我在棋盤上:'不會工作,因爲棋盤不包含整數 – TGKL

+1

@TGKL,不,你可以遍歷字符串,所以這是可能的。然而,這裏有用的是另一個問題。 – Kevin

回答

1

我發現在一個循環中執行此操作更容易,每次迭代打印一排電路板。您可以通過使用%運算符檢查當前迭代是偶數還是奇數來在垂直和水平條之間交替。

使用字符串不需要使用連接 - 使用+=運算符可以更清楚地附加。

def draw(): 
    # initialize an empty board 
    board = "" 

    # there are 5 rows in a standard tic-tac-toe board 
    for i in range(5): 
     # switch between printing vertical and horizontal bars 
     if i%2 == 0: 
      board += "| " * 4 
     else: 
      board += " --- " * 3 
     # don't forget to start a new line after each row using "\n" 
     board += "\n" 

    print(board) 

draw() 

輸出:

| | | |  
--- --- --- 
| | | |  
--- --- --- 
| | | | 
+0

你的方法有效!謝謝。 –

0

中查找join功能是如何工作的。首先,它需要給定的字符串並將其用於「膠水」,即連接其他字符串的字符串。其次,它返回構造的字符串;您的join操作無法保存結果。

嘗試使用嵌套循環首先執行此操作:打印一行框,然後是水平分隔符等。然後,逐位將其轉換爲您想要的單個字符串輸出。

0

你可以試試這個:

def draw(): 
    return [["__" for b in range(3)] for i in range(3)] 

現在你有一個列表的列表包含您的主板。要打印出來,您可以這樣做:

the_board = draw() 

for i in the_board: 
    for b in i: 

     print('|'.join(i), end="") 

    print() 

print(" | | ") 
+0

感謝您的幫助。看看我做了什麼,工作。 –