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

Python递归实现星号三角形遇TypeError错误求助

解决递归实现星号三角形的TypeError问题

我来帮你排查这个问题~你遇到的TypeError: must be str, not NoneType是因为递归的终止条件返回了None,导致字符串拼接失败。

错误原因分析

当n == 0时,你的draw_triangle函数只写了return但没有返回有效字符串,Python中这种情况默认返回None。而在else分支里,你把当前行的字符串和draw_triangle(n-1)的返回值拼接,当递归到n=0时,就变成了字符串 + None,这自然会触发类型不匹配的错误。

修复后的代码

只需要把终止条件的返回值改成空字符串"",就能解决这个问题:

def main():
    num = int(input("Enter an integer: "))
    triangle = draw_triangle(num)
    print(triangle)

def draw_triangle(n):
    if n == 0:
        return ""  # 返回空字符串而非None
    else:
        return ("*" * n + '\n') + draw_triangle(n - 1)

main()

运行这段代码,输入3的话会输出从上到下递减的三角形:

***
**
*

拓展:实现递增的正三角形

如果你想要的是从上到下从1个星号到n个的正三角形,只需要调整递归拼接的顺序,先递归再拼接当前行:

def draw_triangle(n):
    if n == 0:
        return ""
    else:
        return draw_triangle(n - 1) + ("*" * n + '\n')

输入3时输出:

*
**
***

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:50:20