我正在尝试创建一个"文本三角形"由角色'o'
组成。这是我写的代码:
base = 6
print("Part Two: Triangle with o's")
for r in range(base, 0, -1):
for c in range(r):
print(' ', end='')
print('o', sep='')
我写的代码是输出:
o
o
o
o
o
o
但我想要的输出是:
o
oo
ooo
oooo
ooooo
oooooo
有人可以帮我确定一下我做错了吗?
答案 0 :(得分:-1)
这是一个功能:
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()
要做到这一点,我们可以编写另一个嵌套的for循环,它在最后一个嵌套的for循环中取消,在r
处,然后一直到行结束,base
。最后,我们需要在主for循环的底部调用print()
而不带参数来获取换行符。我希望这比我以前的快速回答更具解释性。
以上内容符合您老师的要求,但远非最佳解决方案。如果我必须没有任何限制地回答这个问题(即使用嵌套的for循环),我可能会这样做:
base = 6
for r in range(base):
print('{:>{}}'.format('o' * (r+1), base))
此解决方案使用str.format()
和format specification mini-language来对齐'o'
。