如何在Python中使用for循环创建多列?

问题描述 投票:0回答:2

我正在尝试在 Python 中创建一个网格,该网格仅使用 For 循环和函数来使用不同的符号(+、-、|)。它应该是一个 2 by 'n' 网格,其中 'n' 是用户将为其输入内容的函数的参数。 [如果 n = 2,这应该是这个样子]

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

这是我到目前为止所得到的:

#function for 2byN grid
def print_2byN(n):
  def print_2byN_rows_columns(r): #r = rows
    for x in range(r):
      for y in range(n):
        print('+', '- '*4, end='')
        print('+')
        for num in range(4):
          print('|', '  '*4, end='')
          print('|')
    print('+', '- '*4, end='')
    print('+')
  print_2byN_rows_columns(2)

#Main
print_2byN(int(input("Enter an integer for 2byN: ")))

当我为 n 输入“1”时,我得到了这个(应该会发生):

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

当我为 n 输入“2”时,我得到了这个(这是不应该发生的):

+ - - - - +
|         |
|         |
|         |
|         |
+ - - - - +
|         |
|         |
|         |
|         |
+ - - - - +
|         |
|         |
|         |
|         |
+ - - - - +
|         |
|         |
|         |
|         |
+ - - - - +
python for-loop shapes
2个回答
0
投票

试试这个方法:

def print_2byN(n):
    for x in range(2):
        # Top border of the cell
        for y in range(n):
            print('+', '- ' * 4, end='')
        print('+')

        # Interior of the cell
        for num in range(4):
            for y in range(n):
                print('|', '  ' * 4, end='')
            print('|')

    # Bottom border of the last row
    for y in range(n):
        print('+', '- ' * 4, end='')
    print('+')

注意:我把

print_2byN_rows_columns
去掉了,因为没有必要,你可以直接使用
range(2)


0
投票

您必须根据

n
的值制作单独的线条,然后在一个简单的循环中重复使用它们:

def grid(n):
    assert n>0, 'n must be >0'
    line = '+%s+' % '+'.join(['-'*4]*n)
    space = '|%s|' % '|'.join([' '*4]*n)
    for _ in range(n):
        print(line)
        for _ in range(4):
            print(space)
    print(line)

注意。我省略了

- - -
行中的空格,但您可以轻松添加它们。

示例:

# grid(1)
+----+
|    |
|    |
|    |
|    |
+----+

# grid(2)
+----+----+
|    |    |
|    |    |
|    |    |
|    |    |
+----+----+
|    |    |
|    |    |
|    |    |
|    |    |
+----+----+

# grid(3)
+----+----+----+
|    |    |    |
|    |    |    |
|    |    |    |
|    |    |    |
+----+----+----+
|    |    |    |
|    |    |    |
|    |    |    |
|    |    |    |
+----+----+----+
|    |    |    |
|    |    |    |
|    |    |    |
|    |    |    |
+----+----+----+
© www.soinside.com 2019 - 2024. All rights reserved.