这里有一个函数来做到这一点:
def text_triangle(base, char):
return '\n'.join(' ' * (base-i) + char * i for i in range(1, base+1))
print(text_triangle(6, 'o'))
不打算举行的事实,你刚刚张贴的截图反对你,因为这个问题有很多事情要做的格式,这是很难在降价来表示。
编辑
你得到的每行空格正确的号码(好样的!)。您的代码存在的问题是,您只需在每行上放置一个'o'
,而不是用'o'
填充行的其余部分。
base = 6
for r in range(base-1, -1, -1):
for blank in range(0, r):
print(' ', end='')
for o in range(r, base):
print('o', end='')
print()
要做到这一点,我们可以只写另一个嵌套的循环,其中最后嵌套的循环不放过,在r
,并且去,直到行,base
结束拾取。最后,我们需要调用print()
,在主for循环的底部没有参数来获取换行符。我希望这比我以前的快速回答更具解释力。
上述内容符合老师的要求,但远不是最好的解决方案。如果让我来回答这个问题,没有任何限制(即使用嵌套的for循环),我可能会做这样的事情:
base = 6
for r in range(base):
print('{:>{}}'.format('o' * (r+1), base))
该解决方案使用str.format()
和format specification mini-language右对齐'o'
的。
来源
2016-03-04 20:38:24
pzp
也许你应该将你的代码复制粘贴到问题中,而不是向我们展示它的图片。 –
请将您的图片内容作为您的帖子中的代码提交 – phenxd
您的老师是否允许您在网上寻求帮助?因为他们有很多工具可以帮助找到试图欺骗的学生。 – JDB