如何获得O的三角形

时间:2016-03-04 20:32:39

标签: python

我正在尝试创建一个"文本三角形"由角色'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

有人可以帮我确定一下我做错了吗?

1 个答案:

答案 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'