如何打印带有坐标的电路板?

2024-04-23 15:23:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典,里面有一些坐标,每个坐标是真是假。 让我们这样说:

{(0, 0): False, (0, 1): False, (1, 0): True, (1, 1): False}

我想做一个def,它取这本字典,如果坐标上为假,就用一个空正方形打印电路板,如果坐标上为真,就用实心正方形打印电路板。 到目前为止,我写了这样一篇文章:

def printboard(board):
    sizer = int(get_size(board))
    for x in range(sizer):
        falseCount = 0
        trueCount = 0
        for y in range(sizer):
            if board[x,y] == False:
                falseCount += 1
            if board[x,y] == True:
                trueCount += 1
        print('⬛'*trueCount + '⬜'*falseCount)   

但是当我编译它时,它不会打印真正的正方形。 有人知道怎么做吗? 提前谢谢!你知道吗


Tags: inboardfalsetrueforif字典def
2条回答

给你

x = {
    (0, 0): False, (0, 1): False, 
    (1, 0): True,  (1, 1): False
}

# build a board and fills it with True (⬜)
def build_board(size):
    board = []
    for i in range(size):
        board += [[]]
        for j in range(size):
            board[i] += ['⬜']
    return board 

# fills False entries in the board from the dict (⬛)
def fill_board(data, board):
    for key, value in x.items():
        if value == False:
            board[key[0]][key[1]] = '⬛'
    return board   

# prints the board
def print_board(board):
    for i in range(len(board)):
        for j in range(len(board[i])):
            print(board[i][j], end = "")
        print()

## testing the functions
if __name__ == '__main__':
    board = build_board(2)
    board = fill_board(x, board)
    print_board(board)

输出:

⬛⬛
⬜⬛

您根本不需要计数,可以将printend=""一起使用:

def printboard(board):
    mx = max(x for x,_ in board.keys() )
    my = max(y for _,y in board.keys() )

    for y in range(my+1):
        for x in range(mx+1): 
            print('⬛' if board[(x,y)] else '⬜', end= "") 
        print("") 

#           x  y
print('⬛' if board[(x,y)] else '⬜', end= "") False})

输出:

⬜⬛
⬜⬜

这将放入正确的换行符并使用非矩形输入。你知道吗

相关问题 更多 >