如何消除生成n行星号的递归函数输出中的None错误?
输出末尾出现None的原因及解决办法
为什么会出现None?
- Python里,任何没有显式
return语句的函数,默认都会返回None。 - 你执行
print(recursive_lines(5))时,首先recursive_lines(5)会运行内部的for循环,打印出5行星号;接着这个函数返回默认的None,外层的print()就把这个None也打印了出来,所以末尾多了一行None。
解决办法
- 最简单的修复:直接调用函数,不要用
print()包裹,把代码里的print(recursive_lines(5))改成:recursive_lines(5) - 如果你非要用
print()包裹(其实没必要),可以给函数加一个返回值,比如:def recursive_lines(n): for n in range(0,n): print ('*' + ('*'*n)) return '' # 添加返回语句,避免返回None print(recursive_lines(5))
额外说明:你的函数不是递归函数
你提到这是“递归函数”,但当前代码用的是for循环,并没有函数调用自身的逻辑。如果要写真正的递归版本,参考下面的代码:
def recursive_lines(n): if n <= 0: return recursive_lines(n-1) # 递归调用自身 print('*' * n) recursive_lines(5)
内容的提问来源于stack exchange,提问作者han zo
相关产品推荐
相关产品推荐

