我正在尝试在 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”时,我得到了这个(这是不应该发生的):
+ - - - - +
| |
| |
| |
| |
+ - - - - +
| |
| |
| |
| |
+ - - - - +
| |
| |
| |
| |
+ - - - - +
| |
| |
| |
| |
+ - - - - +
试试这个方法:
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)
。
您必须根据
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)
+----+----+----+
| | | |
| | | |
| | | |
| | | |
+----+----+----+
| | | |
| | | |
| | | |
| | | |
+----+----+----+
| | | |
| | | |
| | | |
| | | |
+----+----+----+