我已经看过多个“python星号三角形”及其解决方案,但我仍然坚持使用递归创建一个星号三角形(没有循环,这会让我看起来更容易。)下面是我目前的代码:
def main():
num = int(input("Enter an integer: "))
triangle = draw_triangle(num)
print(triangle)
def draw_triangle(n):
if n == 0:
return
else:
return ("*" * n + '\n') + draw_triangle(n - 1)
main()
当我运行代码时,我收到“TypeError:必须是str,而不是NoneType”。我做了一些研究,仍然没有完全理解这个错误告诉我的是什么。如果以前问过这个问题,我很抱歉,我无法找到一个处理任何递归函数的人。谢谢。
答案 0 :(得分:0)
return
至return ""
输入:5
输出:
*****
****
***
**
*
答案 1 :(得分:0)
发生此错误是因为您返回空值。请尝试返回空白字符串
解决方案:
第9行:
将142511
替换为return
答案 2 :(得分:0)
代码工作正常,但只是一个小问题。
在使用基本情况(即if n == 0:
进行测试时,必须将返回值设置为某个值,否则返回None
。因此,在输入数字达到0后,它返回None
返回None
的任何内容在python中被解释为失败的情况
这是一个解决方法:
def draw_triangle(n):
if n == 0:
return ''
else:
return ("*" * n + '\n') + draw_triangle(n - 1)
def main():
num = int(input("Enter an integer: "))
triangle = draw_triangle(num)
print(triangle)
main()
因此,在达到n == 0
大小写后,程序将返回一个空白字符串并继续。