Python:模式显示

时间:2015-03-11 01:47:56

标签: python nested-loops

我刚刚开始学习Python,我需要有关创建此模式的帮助:

    ******
     *****
      ****
       ***
        **
         *

我目前有这段代码:

      base = 6
      for row in range (base):
          for col in range (row+1):
              print('*', end='')
          print()

变为:

*
**
***
****
*****
******

3 个答案:

答案 0 :(得分:0)

这里你需要的是跟踪你需要多少空间 - 你几乎已经有了代码 - 以及你需要多少'*'个。然后,对于每一行,您需要打印适当数量的' ' s和相应数量的'*' s。由于我的猜测是您希望总宽度保持不变,因此您需要x' 'sn-x'*'个,其中{{1}是你想要的行数/总宽度。

所以例如

n

会奏效。

如果这是一个家庭作业问题,我建议不要提出上述解决方案。最好以标准方式写出来。

答案 1 :(得分:0)

由于这可能是一些家庭作业或@cge上面指定的东西,我只是希望两年的差异就足够了,我正在写答案来讲述很多人都不太清楚的事情。在Python中。

查看您尝试制作的模式是在任何编程语言中要求形成的最常见的事物之一,并且很容易用Java或C ++制作。但是在考虑如何在Python中创建这样的模式时,我想到了同样的事情,因为在使用Python时,print()函数会在使用时更改行。所以没有像Java那样的功能,print和println是两个不同的东西。

现在这里有一个有趣的事情需要了解。在Python 3中,随着print作为一种方法的引入,还带来了一些其他的东西,它也有一个名为end =“\ n”的东西作为默认值附加到它上面。这就是为什么在被调用时,打印功能在下一行结束。所以我们需要做的就是不让默认工作。

以下是代码的工作原理:

for i in range(6):
    for x in range(6):
        if i!=0:
            print(" ",end="")
            i-=1

        else:
            print("*",end="")

    print()

因此我们看到使用打印功能的上述附加功能,我们可以根据您的要求使用和创建这样的模式。

答案 2 :(得分:-1)

我认为你太复杂了

base = 6

for i in range(base, 0, -1):
    print "*"*i

你得到:

******
*****
****
***
**
*

考虑如何设置范围。如果你想在打印“*****”之前打印“******”,你需要让python知道在5之前打印6.通过倒数你的范围来做到这一点。

我在这做过:

for i in range(base, 0, -1):

它从base(你设置为6)开始,并向下计数-1,一直到零。