请求协助编写符合测试用例的迭代式单线条图案生成代码
解决迭代生成指定图案的问题
嘿,我来帮你搞定这个图案生成的问题~首先看你当前的代码,核心问题是每次循环都在重复添加相同的*-片段,完全没根据迭代次数调整短横线的数量,所以才会输出重复的*-*-*-*-这种不符合要求的结果。
先拆解目标规律
咱们先把需求里的图案拆解开,就能找到核心逻辑:
pattern(1)→*-:1个*+ 1个-pattern(4)→*-*--*---*----:依次是*+1个-、*+2个-、*+3个-、*+4个-,把这些片段直接拼接起来pattern(6)同理:从1到6,每个序号对应一个*加对应数量的-,全部串起来就行
修正后的代码
def pattern(number): result = "" for i in range(1, number + 1): # 每个片段是*加上i个短横线 result += "*" + "-" * i return result
代码为啥这么写?
- 先初始化空字符串
result,用来存最终的图案 - 循环范围用
range(1, number + 1),这样能遍历1到number的所有整数(包含number本身,不会少生成最后一段) - Python里字符串乘以数字会自动重复对应次数,所以
"-" * i就能直接得到i个短横线,再加上*就是当前序号对应的片段 - 把每个片段依次拼到
result里,最后返回就行
测试验证一下
- 调用
pattern(1),输出*-✔️ - 调用
pattern(4),输出*-*--*---*----✔️ - 调用
pattern(6),输出*-*--*---*----*-----*------✔️
顺便说下原代码的问题
- 你用了
#但需求里是*,符号不对 - 循环范围是
range(1, number),会少执行一次循环(比如number=4时只跑3次,少了最后一段) - 每次循环都加固定的
*-,完全没根据i的大小调整短横线数量,自然出不来递增的效果
内容的提问来源于stack exchange,提问作者Alyssie
相关产品推荐
相关产品推荐

