You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python单参数高阶函数实现指定符号生成宽高矩形问题排查

代码修正方案

现有代码问题梳理

  • 循环逻辑完全错误:len(i)的取值始终等于你传入的宽度width,和需要输出的行数height没有关联,绝大多数情况下循环不会触发执行
  • 语法错误:内层函数中i = i+1属于字符串和整数做加法,Python不支持该操作,运行会直接抛出类型错误
  • 无显式返回值:内层函数没有写return语句,Python函数默认返回None,调用后再print就会额外输出None
  • 外层返回值修改错误:rectangle是高阶函数,必须返回内层函数对象,直接修改为return i会因为i未定义直接报错

修正后代码

你可以选择将拼接好的矩形内容作为返回值返回,符合你给出的测试调用习惯(调用时加print):

def rectangle(x):
    def generate_rect(width, height):
        single_line = x * width
        # 拼接height行内容,行之间用换行符分隔
        return '\n'.join([single_line for _ in range(height)])
    return generate_rect

如果你想要保留在内层函数打印的逻辑,调用时不需要加print即可:

def rectangle(x):
    def generate_rect(width, height):
        single_line = x * width
        for _ in range(height):
            print(single_line)
    return generate_rect

对应调用方式为:

percent = rectangle('%')
percent(3,2)
# 直接输出两行%%%,不会额外打印None

测试验证

第一种返回内容的方案测试结果和你给出的预期完全一致:

>>> percent = rectangle('%')
>>> dot = rectangle('.')
>>> print(percent(3,2))
%%%
%%%
>>> print(dot(4,1))
....

内容的提问来源于stack exchange,提问作者Vivianne Vy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:06:07