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

为何代码第二次迭代无法生成目标字符图案?请协助排查

问题排查:无法生成指定图案的代码问题

需求:输入row=3、5或任意值x时,生成如下指定图案(以row=3为例):

#When row = 3

1|..#  
2|.##  
3|###  

注意:每行的“.”数量与“#”数量相反,比如第1行有2个“.”和1个“#”,第2行有1个“.”和2个“#”,第3行有0个“.”和3个“#”。

你的代码如下:

row = 3 

for i in range(1, row + 1):
    for j in range(1, i + 1):
        for k in range(1, (row - i) + 1):
            print(".", end= "")
        print("#", end="")
    print("")

问题原因

循环嵌套顺序完全错误。你当前的逻辑是每打印一个#之前,都重复打印一遍当前行所有的.,比如第2行i=2时,j循环要执行2次:

  • 第一次j=1:打印1个. + 1个#
  • 第二次j=2:又打印1个. + 1个#
    最终输出.#.#,和预期的.##完全不符。

正确逻辑应该是:先一次性打印完当前行所有的.,再一次性打印完当前行所有的#,而非每个#都前置一遍.。

修正后的代码

基础循环写法

row = 3 

for i in range(1, row + 1):
    # 打印当前行的所有.,数量为 row - i
    for k in range(row - i):
        print(".", end="")
    # 打印当前行的所有#,数量为 i
    for j in range(i):
        print("#", end="")
    # 换行
    print("")

更简洁的字符串乘法写法

Python支持字符串直接乘数字生成重复内容,代码可简化为:

row = 3 

for i in range(1, row + 1):
    print("." * (row - i) + "#" * i)

测试结果

row=3时输出:

..#
.##
###

row=5时输出:

....#
...##
..###
.####
#####

完全符合需求。

内容的提问来源于stack exchange,提问作者Arif Faisal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:05:23