Python 递归打印具有自定义间距的棱锥图案
我在python中成功地打印了一个递归金字塔模式,但我希望能够添加自定义间距,并且我在尝试时遇到了错误 以下是我的代码:Python 递归打印具有自定义间距的棱锥图案,python,recursion,Python,Recursion,我在python中成功地打印了一个递归金字塔模式,但我希望能够添加自定义间距,并且我在尝试时遇到了错误 以下是我的代码: def printstack(n, indent = 0): if n == 0: return 'U' else: print(' '*(n-1) + 'U '*(indent+1)) printstack(n-1, indent+1) 例如: >>> printstack(3) U
def printstack(n, indent = 0):
if n == 0:
return 'U'
else:
print(' '*(n-1) + 'U '*(indent+1))
printstack(n-1, indent+1)
例如:
>>> printstack(3)
U
U U
U U U
>>> printstack(3,1)
U U
U U U
U U U U
Expected Results
>>> printstack(3,1)
U
U U
U U U
输出:
U
U U
U U U
U U U U
U U U U U
更改空间:
printstack(5,6,3)
输出
U
U U
U U U
U U U U
U U U U U
检查下面的代码,我想你看起来像这样-
>>> def printstack(n, indent=0):
... if n > 0:
... printstack(n-1, indent+1)
... print(' '*indent + 'U '*n)
>>> printstack(3)
U
U U
U U U
>>> printstack(3,1)
U
U U
U U U
>>> printstack(3,2)
U
U U
U U U
这似乎产生了你所说的你想要的,而且也有点简单。请注意,无关的
返回已被删除
def printstack(n, indent = 0):
if n > 0:
printstack(n-1, indent+1)
print(' ' * indent + 'U ' * n)
你的意思是在基本情况下打印('U')
,而不是返回它吗?@pjs实际上会导致更多问题,在每个金字塔的末尾,如果我不使用return语句,现在会打印一个带有单数“U”的新行。但是,返回它没有意义,由于您在递归中不处理返回值。我编辑了我的问题,以澄清预期结果应该是什么样子,字符之间没有添加空格,而只是从屏幕左侧推远一点。现在有意义了。。。非常感谢。哇,似乎有点不公平修改这个解决方案使用我的@那是我的睡衣,对不起,我没有读你的睡衣,这是我的coincidence@wim是的,一旦你意识到返回的没有任何作用,这就是显而易见的解决方案。@pjs,你可以检查编辑历史记录,我的原始答案在你之前发布,解决了这个问题,wim所做的修改看起来只会让它变得干净。
def printstack(n, indent = 0):
if n > 0:
printstack(n-1, indent+1)
print(' ' * indent + 'U ' * n)