Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何得到O'的三角形;s_Python - Fatal编程技术网

Python 如何得到O'的三角形;s

Python 如何得到O'的三角形;s,python,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

我试图创建一个由字符
'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

有人能帮我找出我做错了什么吗?

这里有一个函数:

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循环,在
r
处拾取上一个嵌套for循环的结束位置,并一直运行到行的末尾,
base
。最后,我们需要调用
print()
,在主for循环的底部不带任何参数,以获得换行符。我希望这比我以前的快速回答更能说明问题

以上内容符合您老师的要求,但远不是最佳解决方案。如果我必须在没有任何限制的情况下回答这个问题(即使用嵌套for循环),我可能会这样做:

base = 6
for r in range(base):
    print('{:>{}}'.format('o' * (r+1), base))

此解决方案使用和右对齐
'o'

也许您应该复制粘贴您的代码到问题中,而不是向我们显示它的图片。请在您的帖子中以代码形式提交图像的内容您的老师是否允许您在线查找帮助?因为他们有很多工具可以用来发现学生试图作弊。对此我很抱歉。我对这个网站和它的特权是非常陌生的。下层选民愿意解释一下我的答案有什么问题吗?它以一种相当有效的方式产生了OP想要的确切输出。也许是因为你回答的似乎是“为我做家庭作业”通过给出一个代码转储,没有解释它为什么工作以及问题中的代码出了什么问题。提问者将如何从这个answed中学习编程?答案必须严格用于循环。事实上,我希望被引导到正确的方向,而不是仅仅被给出答案。只是编辑了我的答案,使其更加充实。很抱歉,我花了这么长时间才开始做这件事。回顾过去,我同意@Adrianhh的说法,我的答案有点代码垃圾,但我相信我现在已经给出了充分的解释。此外,根据OP的要求,我还提供了一个“仅用于循环”的解决方案。
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()