首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用给定高度和宽度的给定符号制作矩形

使用给定高度和宽度的给定符号制作矩形
EN

Stack Overflow用户
提问于 2021-11-05 02:27:02
回答 2查看 39关注 0票数 1

我试着用给定的高度和宽度把一个给定的符号做成一个矩形。第一个def函数应该只包含一个参数。这也应该是一个高阶函数。这是我到目前为止的代码:

代码语言:javascript
复制
def rectangle(x):
    def someName(width,height):
        i = x * width
        while len(i) <= height:
            print(i)
            i = i+1
    return someName

如果输入类似这样的内容来测试它,则应打印以下内容:

代码语言:javascript
复制
>>> percent = rectangle('%')
>>> dot = rectangle('.')
>>> print(percent(3,2))
%%%
%%%
>>> print(dot(4,1))
....

我的代码当前返回None。如何让它返回i?如果我将return someName更改为return i,则会发生许多其他错误。

EN

回答 2

Stack Overflow用户

发布于 2021-11-05 02:33:50

someName打印字符,因此从外部调用print是多余的。如果您希望someName执行打印,则将调用更改为:

代码语言:javascript
复制
>>> percent(3,2)
>>> dot(4,1)

另一方面,如果您希望调用者调用print,那么您将需要更改someName以逐段构建字符串并在最后返回它,而不是自己打印。例如:

代码语言:javascript
复制
def someName(width,height):
    i = x * width
    lines = []
    while len(i) <= height:
        lines.append(i)
        i = i+1
    return '\n'.join(lines)
票数 1
EN

Stack Overflow用户

发布于 2021-11-05 02:51:06

您可以尝试使用python的装饰器函数,如下所示:

代码语言:javascript
复制
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)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69848053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档