【问题标题】:How to print what i want here in Python like this picture如何在 Python 中打印我想要的东西,就像这张图片
【发布时间】:2019-09-16 09:32:38
【问题描述】:

我想用 for 循环打印字典 self.board,但我不知道怎么做。

我要打印的内容: enter image description here

这是我的代码:

class board:

    def __init__(self, length=3):
        v = '-'
        self.length = length
        self.size = self.length ** 2 + 1
        self.board = {k: v for k in range(1, self.size)}

    def check_board(self):
        print(self.board)

    def display_board(self):
        print("\nDisplay the board:")
        for i in range(1, self.length + 1):
            for k in range(1, self.length+1): # from here i dont know how to do the right thing to 
                                              # display like in the picture
                print(self.board[k] + " | ")

【问题讨论】:

  • 现在 wrt/ 问题本身:如果你的“板”应该是一个网格,你的数据结构应该以这种或另一种方式反映(这里想到一个列表列表.. .)。作为一般规则:正确的数据结构是简单、容易、明显的代码的关键。

标签: python python-3.x class


【解决方案1】:

使用更合适的数据结构使代码更简单:

class Board(object):
    def __init__(self, size):
        self._size = size
        self._board = [["-"] * self._size for i in range(self._size)]

    def display(self):
        print("\n".join("|{}|".format("|".join(row)) for row in b._board))

【讨论】:

    【解决方案2】:

    我已对您的显示功能进行了更改。

    class Board:
      def __init__(self, length=3):
          v = '-'
          self.length = length
          self.size = self.length ** 2 + 1
          self.board = {k: v for k in range(1, self.size)}
    
      def check_board(self):
          print(self.board)
    
      def display_board(self):
          print("\nDisplay the board:")
          for i in range(1, self.length + 1):
              for k in range(1, self.length+1): # from here i dont know how to do the right thing to 
                  if(k==self.length):
                    print(" - ")
                  else:                           # display like in the picture
                    print(" - |",end="")
              print("")
    

    两个显着的变化是使用 end="" 不会将其打印到新行。然后在每一行之后添加一个 print("") 以到达新行。检查 k==self.length 是针对不打印“|”的最后一个元素完成的

    【讨论】:

    • 这是错误设计导致代码过于复杂(效率低下)的完美示例......当然,正确的解决方案是修复设计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 2021-10-04
    • 2012-03-29
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多