Python:不同大小的打印网格

Python:不同大小的打印网格,python,python-3.x,function,grid,Python,Python 3.x,Function,Grid,我正在开发一个函数,根据用户输入获得一个要打印的网格。到目前为止,我能够让它打印出一个简单的版本,其中它改变了大小,例如: print_grid(15) #prints a larger grid: + - - - - - - - + - - - - - - - + | | | | | | | | | |

我正在开发一个函数,根据用户输入获得一个要打印的网格。到目前为止,我能够让它打印出一个简单的版本,其中它改变了大小,例如:

print_grid(15) 
#prints a larger grid:
+ - - - - - - - + - - - - - - - +
|               |               |
|               |               |
|               |               |
|               |               |
|               |               |
|               |               |
|               |               |
+ - - - - - - - + - - - - - - - +
|               |               |
|               |               |
|               |               |
|               |               |
|               |               |
|               |               |
|               |               |
+ - - - - - - - + - - - - - - - +
但是现在我正在尝试做一些事情,以便它可以接受两个输入变量(x,y),其中x是行/列(面积)的数量,y是较大整体中单个较小网格的大小。例如,print_grid2(3,4)会导致:

+ - - - - + - - - - + - - - - +
|         |         |         |
|         |         |         |
|         |         |         |
|         |         |         |
+ - - - - + - - - - + - - - - +
|         |         |         |
|         |         |         |
|         |         |         |
|         |         |         |
+ - - - - + - - - - + - - - - +
|         |         |         |
|         |         |         |
|         |         |         |
|         |         |         |
+ - - - - + - - - - + - - - - +
我重用了第一个网格示例中的一些代码,然后对其进行了更改,以适应此特定任务,但这次我没有得到任何输出,也不确定如果没有得到任何输出会发生什么。。。感谢您的帮助。(我还没有更新我的评论,所以我意识到它们不再有意义,因为它们与上一次迭代相关)

当前代码:

def grid_print(area, units):

   print_Area = (area * area)

   grid_rows = units + (units + 1) + 2

   grid_cols = units + 2

   if units % 2 == 0:           # If grid entry is even (it will end up making
        grid_rows += 1               # the square uneven, so increase number of rows by 1
                            # now grid is technically uneven
        for i in range(print_Area):
           for row in range(grid_rows):     # for each item in number of items(rows)
               for col in range(grid_cols): # for each item in number of items(columns)
                   if row == 0 or row == int(grid_rows/2) or row == grid_rows -1:    # if item is beginning, middle or end
                   # --  Formatting beam structure  -- #
                       if col == 0:                        # beginning, print '+' no '\n'
                           print('+', end='')
                       elif col == grid_cols -1:                # end, print '+'
                       print('+')
                       elif int(grid_cols/2) == col:            # middle:
                           if grid_rows % 2 == 0:               # if grid is even, pad '+' with ' '
                               print(' + ', end='')        # if grid is uneven, no padding
                           else:                           # print '+' no '\n'
                               print('+', end='')
                       elif col % 2 == 0:                  # if col item is an even number
                           print('-', end='')              # print '-' with no '\n'
                       else:                               # else if col item is uneven item num
                           print(' ', end='')              # print ' ' no '\n'
                   else:
                   # --  Formatting line structure  -- #
                       if col == 0:                        # if column is at starting position 0
                           print('|', end='')              # print '|' no '\n'
                       elif col == int(grid_cols/2):            # if column is at middle pos
                           if units % 2 == 0:               # print '|' no '\n'
                               print(' | ', end='')        # (has padding if grid is even or not)
                           else:
                               print('|', end='')
                       elif col == grid_cols -1:                # if column is at end position of grid
                           print("|")                      # print '|'
                       else:
                           print(' ', end='')              # all other circumstances, print ' ' no '\n'

因此,如果单位%2==0:,则代码中的缩进错误可能只是
之后的缩进错误,但您的整个代码可以压缩到以下行:

def print_grid(area, unit):
    for _ in range(area):
        print(("+" + "- " * unit) * area + "+")
        for _ in range(unit):
            print(("|" + "  " * unit) * area + "|")
    print(("+" + "- " * unit) * area + "+")


print_grid(3, 4)
印刷品:

+--------+--------+--------+
|        |        |        |
|        |        |        |
|        |        |        |
|        |        |        |
+--------+--------+--------+
|        |        |        |
|        |        |        |
|        |        |        |
|        |        |        |
+--------+--------+--------+
|        |        |        |
|        |        |        |
|        |        |        |
|        |        |        |
+--------+--------+--------+

因此,如果单位%2==0:
,则代码中的缩进错误可能只是
之后的缩进错误,但您的整个代码可以压缩到以下行:

def print_grid(area, unit):
    for _ in range(area):
        print(("+" + "- " * unit) * area + "+")
        for _ in range(unit):
            print(("|" + "  " * unit) * area + "|")
    print(("+" + "- " * unit) * area + "+")


print_grid(3, 4)
印刷品:

+--------+--------+--------+
|        |        |        |
|        |        |        |
|        |        |        |
|        |        |        |
+--------+--------+--------+
|        |        |        |
|        |        |        |
|        |        |        |
|        |        |        |
+--------+--------+--------+
|        |        |        |
|        |        |        |
|        |        |        |
|        |        |        |
+--------+--------+--------+

规则如何?示例中的3和4出现在哪里?3x3和4x4单元格?可能缩进错误?如果单位%2==0,则在
之后缩进所有内容:
对不起!我更新了我的帖子,增加了关于预期结果的更多细节。规则如何?示例中的3和4出现在哪里?3x3和4x4单元格?可能缩进错误?如果单位%2==0,则在
之后缩进所有内容:
对不起!我更新了我的帖子,增加了关于预期结果的更多细节。谢谢你!这在我提供的有限参数范围内确实有效,因此我很抱歉从一开始就没有提供更多细节。理想情况下,该函数将能够接受两个输入变量(x,y),其中x是行/列的数量,y是较大整体中单个较小网格的大小。@McBraunie此函数可以做到这一点。您对这种方法有什么问题吗?谢谢!这在我提供的有限参数范围内确实有效,因此我很抱歉从一开始就没有提供更多细节。理想情况下,该函数将能够接受两个输入变量(x,y),其中x是行/列的数量,y是较大整体中单个较小网格的大小。@McBraunie此函数可以做到这一点。这种方法有什么问题吗?