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

打印向下三角形的Python代码逻辑存疑:为何空格计算看似矛盾却输出正确?

向下三角形打印代码的逻辑解析

先看这段实现向下三角形的Python代码:

n=int(input("Please Enter Number: "))
a="*"
k=" "
for i in range(n,-1,-1):
    for j in range(i+1):
        k=" "*((n+1)-j)
    
    print(k+(a*i)+a+(a*i))
    k=" "

你觉得空格逻辑有问题,是忽略了内层循环的最后一次赋值会覆盖之前的结果。

内层for j in range(i+1)循环里,j会从0一直跑到i,每次循环都会重新计算k的空格数,但只有最后一次(也就是j=i的时候)的赋值才会保留下来。此时空格数是(n+1)-i:

  • 当i=n时,空格数是(n+1)-n=1
  • 当i=n-1时,空格数是(n+1)-(n-1)=2
  • ...
  • 当i=0时,空格数是(n+1)-0=n+1

随着外层循环i从n递减到0,(n+1)-i的值会越来越大,所以实际输出的空格也就跟着递增了。

说白了就是内层循环做了很多无用的赋值,只留下最后一次的结果,刚好满足了向下三角形需要的空格递增要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:34:57