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
相关产品推荐
相关产品推荐

