2016-07-16 7 views
0

私はPythonを初めて使いました。私はコードを作成しています。それの一部は次のとおりです。Python-作成した画像から操作する行を選択

出力し
a=3 
def tictactoe(a): 
    for x in range(0,a): 
     print (("- "*a)) 
    z=tictactoe(a) 
    print(z) 

- - - 
- - - 
- - - 

私は、たとえば、画像から行を選択し、なるために上書きする- * -代わりの- - -

答えて

1

あなたをしたいと思います質問はやや混乱します:あなたのコードにデータ構造がなく、行が「選択」されています。しかし、それは可能性があります!

まず、listlistのsと、3x3のボードを作成します。

board = [] 
for x in xrange(3): 
    board.append(['-']*3) 

:あなたは、Python 2.Xを使用している場合は、xrangexrange doesnのために、より多くのメモリ効率rangeより実際にはlistを生成して反復処理します。このような少数の場合、その差はごくわずかです。

for row in board: 
    print ' '.join(row) 

[['-','-','-'], # <-- board[0] 
['-','-','-'], # <-- board[1] 
['-','-','-']] # <-- board[2] 

ボードを印刷するには、あなたがこのような何かを行うことができます:

は今ボードの各要素は3つの文字列'-'の別のlist長さ3のlist、ありますmy_string.join(my_list)は、my_stringで区切られたmy_listのすべての文字列を連結します。

boardの第2行はboard[1]であり、第2行のboardの第2要素はboard[1][1]です。だから、

、次のことができ、'*'に中央の要素を設定するには:

board[1][1] = '*' 
+1

FYI、Pythonの3で、私は 'range'がイテレータであるかなり確信しています( 'xrange'と等価です)。 – smarx

0

だけで、別のアプローチ

def write(board, char, row, column): 
    """write char on board, row and column 
    are indexed with base 1 
    """ 
    row -= 1 
    column = 2*(column - 1) 
    board[row] = board[row][:column] + char + board[row][column + 1:] 
    return board 

def print_board(board): 
    for row in board: 
     print row 

if __name__ == '__main__': 
    size = 3 
    board = [ "- " * size for _ in range(size)] 
    board = write(board,'x',1,3) 
    print_board(board) 
    print '' 
    board = write(board,'o',1,1) 
    print_board(board)