打印网格中行和列的标签(PYTHON)

时间:2016-11-08 04:36:40

标签: python arrays grid rows labels

如果以前发过这个问题我很抱歉,但如果是的话,我无法在任何地方找到它。而且,我不熟悉numpy。不幸的是,我能找到的唯一答案是numpy aswers。我宁愿不使用numpy,因为我还在学习编码/ python的基础知识。

我正在尝试为我的网格打印标签。我有一个简单的游戏板,我想标记列A,B,C,D和行1,2,3,4。

以下是我生成网格的代码:

def initial(): #Function that creates the 2d array and assigns it the values I want
board = []
for x in range(numrows):
    board.append([])
    for y in range(numcols):   
        if ((x + y)%2):        
           board[x].append('X')   
        else:
            board[x].append('O')  

这是输出:

  O X O X
  X O X O
  O X O X

我想让输出看起来像这样:

    A  B  C  D 
1   O  X  O  X
2   X  O  X  O
3   O  X  O  X

我知道我必须操纵指数,而不是价值观,但就像我说的那样,我仍然是一个菜鸟。根据我在这里的内容,最好的方法是什么?对于循环和打印语句,它是否应该与创建初始网格的代码分开?或者我可以以某种方式改变我的初始游戏板代码来实现这些行/列标签?

到目前为止,我有想做这样的事情:

      for r in range(numrows): # I have a variable in the code numrows = 3
        if(r==0):
            print("1")
        if(r==1):
            print("2")
        if(r==2):
            print("3")
        for c in range(numcols): # also a variable numcols = 4
            if(c==0):
                print("A")
            if(c==1):
                print("B")
            if(c==2):
                print("C")
            if(c==3):
                print("D")
        show_grid(board) #function that prints my board

我认为我很接近,但是我的智慧结束了......我需要帮助。提前感谢您回答我的问题所花费的时间和精力。

1 个答案:

答案 0 :(得分:1)

对于模块化的东西(因此Pythonic:p):

columnsIndices = ['A', 'B', 'C', 'D']
rowsIndices = [1, 2, 3, 4]
print(" ", end="")
for c in columnsIndices :
    print(" " + str(c), end="")      #str() is useless, but it's good practice
print()                              #linefeed
for i in range(len(grid)) :
    print(str(rowsIndices[i]), end="")
    for elt in grid[i] :
        print(" " + str(elt), end="")
    print()                          #linefeed