我试着用给定的高度和宽度把一个给定的符号做成一个矩形。第一个def函数应该只包含一个参数。这也应该是一个高阶函数。这是我到目前为止的代码:
def rectangle(x):
def someName(width,height):
i = x * width
while len(i) <= height:
print(i)
i = i+1
return someName如果输入类似这样的内容来测试它,则应打印以下内容:
>>> percent = rectangle('%')
>>> dot = rectangle('.')
>>> print(percent(3,2))
%%%
%%%
>>> print(dot(4,1))
....我的代码当前返回None。如何让它返回i?如果我将return someName更改为return i,则会发生许多其他错误。
发布于 2021-11-05 02:33:50
someName打印字符,因此从外部调用print是多余的。如果您希望someName执行打印,则将调用更改为:
>>> percent(3,2)
>>> dot(4,1)另一方面,如果您希望调用者调用print,那么您将需要更改someName以逐段构建字符串并在最后返回它,而不是自己打印。例如:
def someName(width,height):
i = x * width
lines = []
while len(i) <= height:
lines.append(i)
i = i+1
return '\n'.join(lines)发布于 2021-11-05 02:51:06
您可以尝试使用python的装饰器函数,如下所示:
def decorate(key):
def real_decorate(func):
def wrapper(width, height):
return func(width * key, height)
return wrapper
return real_decorate
@decorate("%")
def rectangle(width, height):
return [width for i in range(height)]
print("\n".join(rectangle(10, 5)))https://stackoverflow.com/questions/69848053
复制相似问题