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

Python金字塔打印代码中k=2*rows-2及k=k-2的作用咨询

解答金字塔打印代码的两个疑问

先贴出原代码:

# number of rows
rows = 5
k = 2 * rows - 2
for i in range(0, rows):
    # process each column
    for j in range(0, k):
        # print space in pyramid
        print(end=" ")
    k= k-2
    for j in range(0, i + 1):
        # display star
        print("* ", end="")
print("")

1. 代码中k = k-2的作用是什么?

k是用来控制每一行开头的空格数量的:

  • 第一行(i=0)只打印1个星号,需要足够的前置空格让星号居中,这时候用初始的k值输出空格;
  • 每往下一行,星号数量会增加1个,对应的前置空格需要减少2个——因为金字塔是对称结构,星号多一个意味着左右两侧的空格各少1个,加起来就是少2个。每次循环后把k减2,就能让下一行的空格数刚好匹配,保证金字塔始终居中。

2. 为什么使用k = 2 * rows - 2初始化k,而非直接赋值为8?

这么写是为了让代码通用可复用,避免硬编码:

  • 当rows=5时,2*5-2=8,和直接写8效果一样;但如果后续想打印其他行数的金字塔(比如把rows改成6),2*6-2=10,代码会自动算出正确的初始空格数,不用手动修改k的值;
  • 要是直接写死k=8,那只有rows=5的时候金字塔是居中的,换其他行数就会错位,这种硬编码的代码灵活性差,维护起来也麻烦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:52:41