我正在尝试编写一个简单的程序,创建一个正方形网格,如下所示:
+ - - - - + - - - - +
| | |
| | |
| | |
| | |
+ - - - - + - - - - +
| | |
| | |
| | |
| | |
+ - - - - + - - - - +
我希望它接受一个输入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)
这与block函数中的参数有关,但无法解决它。你知道吗
提前谢谢。你知道吗
编辑:
谢谢你的指点,我重写了它如下,它工作得很好。我还修改了它,允许您独立地选择列数和行数。你知道吗
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)
我认为这不是最好的办法。但是您的脚本可以很容易地更新为更具可读性和工作性。你知道吗
这需要一个参数:
x
。但当你称之为:您正在传递它
*args
,它包含[x, 4, midx, x]
。这就是四个论点。你知道吗你应该重新考虑你的结构来解决这个问题。也许是上课?你知道吗
相关问题 更多 >
编程相关推荐