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

