我正在尝试编写一个简单的程序来创建这样的方形网格:
+ - - - - + - - - - +
| | |
| | |
| | |
| | |
+ - - - - + - - - - +
| | |
| | |
| | |
| | |
+ - - - - + - - - - +
我希望它接受一个输入 x,它定义了每行/列中有多少个单元格。脚本如下:
def repeat(x, f, *args):
for i in range(x): f(*args)
def topx(x):
print x*top + '+'
def midx(x):
print x*mid + '|'
def block(f,g,*args):
f(*args)
g(*args)
top = str('+ - - - - ')
mid = str('| ')
x = 2
repeat(x,block,topx,repeat,x,4,midx,x)
topx()
尝试运行脚本时出现以下错误:
TypeError: topx() takes exactly 1 argument (4 given)
这与块函数中的参数有关,但无法弄清楚如何绕过它。
提前致谢。
编辑:
感谢您的指点,我将其稍微改写如下,并且效果很好。我还对其进行了更改,以允许您独立选择列数和行数。
def repeat(x, f, *args):
for i in range(x): f(*args)
def topx(x):
print x*top + '+'
def midx(x):
print x*mid + '|'
def row(x):
topx(x)
repeat(4,midx,x)
top = str('+ - - - - ')
mid = str('| ')
x = 3
y = 4
repeat(y,row,x)
topx(x)