我是python的新手,我正在研究代码。它的一个组成部分是:Python-从创建的图像中选择一行来操纵
a=3
def tictactoe(a):
for x in range(0,a):
print (("- "*a))
z=tictactoe(a)
print(z)
打印出:
- - -
- - -
- - -
我想从图像中选择一行并覆盖而成,也就是说,- * -
代替- - -
我是python的新手,我正在研究代码。它的一个组成部分是:Python-从创建的图像中选择一行来操纵
a=3
def tictactoe(a):
for x in range(0,a):
print (("- "*a))
z=tictactoe(a)
print(z)
打印出:
- - -
- - -
- - -
我想从图像中选择一行并覆盖而成,也就是说,- * -
代替- - -
你问题有点困惑:代码中没有数据结构,行被“选中”。但可能会有!
首先,创建一个3×3板,为list
的list
一个S:
board = []
for x in xrange(3):
board.append(['-']*3)
注意:如果您在使用Python 2.X,xrange
是更多的内存效率比range
,因为没有按xrange
不生成实际的list
来迭代。对于这么小的数字,差异可以忽略不计。
现在板的长度为3,其中每个元素是3串'-'
的另一list
的list
:
[['-','-','-'], # <-- 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] = '*'
只是另一种方法
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)
仅供参考,在Python 3,我敢肯定'range'是一个迭代(相当于'xrange')。 – smarx