2016-07-16 49 views
0

我是python的新手,我正在研究代码。它的一个组成部分是:Python-从创建的图像中选择一行来操纵

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

打印出:

- - - 
- - - 
- - - 

我想从图像中选择一行并覆盖而成,也就是说,- * -代替- - -

回答

1

你问题有点困惑:代码中没有数据结构,行被“选中”。但可能会有!

首先,创建一个3×3板,为listlist一个S:

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

注意:如果您在使用Python 2.X,xrange是更多的内存效率比range,因为没有按xrange不生成实际的list来迭代。对于这么小的数字,差异可以忽略不计。

现在板的长度为3,其中每个元素是3串'-'的另一listlist

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

要打印的板,你可以做这样的事情:

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

注意my_string.join(my_list)将连接my_list中的所有字符串,用my_string分隔。

board的第二行是board[1],第二行board的第二个元素是board[1][1]

因此,该中心元素设置为'*',您可以:

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

仅供参考,在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)