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

如何在Python中实现对角线间隔打印图案?

问题描述

当n=2时,预期输出图案:

* *
 * *
* *
 * *

当n=3时,预期输出图案:

*  *  *
 *  *  *
  *  *  *
*  *  *
 *  *  *
  *  *  *
*  *  *
 *  *  *
  *  *  *

我写了下面这段代码,但只能打印出基本的行列结构,没法实现每行开头的空格间隔:

n = int(input(": "))
i = 0
for i in range(n**2):
    j = 0
    for j in range(n):
        j += 1
        print("* ", end="")
    i += 1
    print("")
解决方法

要实现预期的图案,核心要处理两个细节:

  • 每行开头的空格数:把所有行分成n组,每组n行。每组里第m行(从0开始数)的开头要加m个空格。用i % n就能拿到当前行在组内的位置,以此确定空格数。
  • 星号之间的空格数:n=2时星号之间是1个空格,n=3时是2个,也就是星号间的空格数是n-1个。

修改后的代码如下:

n = int(input(": "))
# 循环n²次,打印总行数
for i in range(n**2):
    # 获取当前行在组内的索引,计算开头空格数
    prefix_spaces = i % n
    print(' ' * prefix_spaces, end='')
    # 打印星号部分:每个星号后加n-1个空格,重复n次
    print(('*' + ' '*(n-1)) * n)

如果不想让每行末尾多出空格,可以用join方法优化:

n = int(input(": "))
for i in range(n**2):
    prefix_spaces = i % n
    print(' ' * prefix_spaces, end='')
    # 用n-1个空格连接n个星号,避免末尾空格
    print((' '*(n-1)).join(['*']*n))

这样运行后就能得到你想要的图案了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:40:38