使用Python创建模式

时间:2015-03-08 02:52:18

标签: python loops

使用Python编辑器,我试图在这里重新创建这个特定的线条模式:

666666
6   6
6  6
6 6
66
6

这是我创建的代码:

steps=6
for s in range(steps):
    print('6' + (' ' * r) + '6')

然而,我得到的输出是:

66
6 6
6  6
6   6
6    6
6     6

因此,你可以看到它几乎与我在上面的开放输出中想要的操作相反。如果有办法扭转这个输出,我必须得到我想要的,请分享。

3 个答案:

答案 0 :(得分:0)

您可以使用内置的reversed函数返回一个反向遍历范围的迭代器。

steps=6
for r in reversed(range(steps)):
     print('#' + (' ' * r) + '#')

或者您可以使用列表拼接来反转列表,如下所示:

steps=6
for r in range(steps)[::-1]:
     print('#' + (' ' * r) + '#')

答案 1 :(得分:0)

除了Martijn关于考虑你需要遵循什么样的模式的评论,即空格的数量如何从一行演变到下一行,你可能想要查看命令的文档{{1在PythonDocs on range()。目前您只提供一个参数:

range
然后,Python将使用剩余参数的默认值: range(stop) start=0。但是,您可以明确地提供这些。步骤'参数是你可以进行反向计数的地方:

step=1

答案 2 :(得分:-1)

让我们从按升序排列开始,如下图

6
66
6 6
6  6
66666

有一系列的空格数取决于高度= 1,即高度= 2,空格数有系列0,1,2等等,因此如果高度为n则系列开始于2其中空间= 0并且在n - 1处结束,其中空格的数量等于n - 3,并且在高度= n时,6的数量等于n - 2.

这个代码是

def print6(height):
...     print 6
...     for s in range(0, height - 2):
...             print str(6) + ' '*s + str(6)
...     print str(6)*2+str(6)*(height-2)

要扭转这个

def print6(height):
...     print str(6)*2+str(6)*(height-2)
...     for s in range(0, height - 2):
...             print str(6) + ' '*(height-3-s) + str(6)
...     print 6