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

如何用Python的while循环绘制对角线图形?现有正方形代码求改进

实现Python对角线图形(基于while循环)

嘿,我来帮你搞定这个对角线图形的实现!你的正方形代码已经用了while循环控制行数,那我们可以用嵌套while循环来控制每行的列位置,精准输出对角线字符。

主对角线(左上到右下)实现

我们需要让每行的第row个位置输出指定字符,其余位置用空格填充。完全沿用你之前的变量风格,代码如下:

def drawDiagonal(size, drawingChar):
    print('Diagonal: ')
    row = 1
    while row <= size:
        col = 1
        # 嵌套while循环控制当前行的每个列
        while col <= size:
            # 仅当列号等于行号时输出目标字符
            if col == row:
                print(drawingChar, end=' ')
            else:
                print(' ', end=' ')
            col += 1
        # 换行结束当前行
        print()
        row += 1
    print()

代码说明:

  • 外层while循环和你的正方形代码逻辑一致,控制总行数
  • 内层嵌套while循环遍历当前行的每一列
  • 通过判断col == row,只在对角线位置输出drawingChar,其余位置用空格占位
  • 用end=' '保证每个元素之间有空格,和你正方形的输出格式统一

扩展:反对角线(右上到左下)

如果需要右上到左下的对角线,只需要修改判断条件为col == size - row + 1即可,代码如下:

def drawAntiDiagonal(size, drawingChar):
    print('Anti-Diagonal: ')
    row = 1
    while row <= size:
        col = 1
        while col <= size:
            if col == size - row + 1:
                print(drawingChar, end=' ')
            else:
                print(' ', end=' ')
            col += 1
        print()
        row += 1
    print()

这样的实现完全符合你的要求:只用while循环(允许嵌套),保持代码简洁,和你现有正方形代码的风格统一,而且可以灵活输出两种对角线图形。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:29:45