与python的金字塔程序

时间:2014-08-08 03:42:37

标签: python-2.7

我是编程新手,需要一些基本程序的帮助: 输出应该是:

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

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。第一种方式,虽然肯定不是最快捷的方式,但只需在新线上手动打印星星就像这样:

print"*****"
print" ****"
print"  ***"
print"   **"
print"    *"

现在,虽然你可以做到这一点,但我们当然是一种低效的做事方式。

所以我们可以做一个循环来打印一条新线上的星星,每一条新线都比上一条线少一颗星。这样做是这样的:

for x in xrange(5, 0, -1):
        print "*" * x

现在问题是这给了我们输出:

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

您想要添加空格,这不是您想要的。因此,我们将创建一个额外的变量,每次循环迭代时都会添加更大的空间:

space = 0
for x in xrange(5, 0, -1):
        print (" " * space) + ("*" * x)
        space +=1

现在让我们看一下输出:

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

Huzzah!由于我们添加了变量,程序现在在那里添加了空格。

如果您有兴趣了解有关python的更多信息,我建议您查看:Python Documentation文档适用于python-3.4.1,但大多数方面仍然适用于python-2.7

上述循环如何正常工作?基本上,我们告诉python要做的是:

  

“我们希望x在循环中最多为5,最小为1.   你完成循环,我希望你从x“

中减去1

这可以这样看:

space = 0 # Set it to zero so we can use it in the loop to account for the spaces. Note how I declared it outside the loop so it does not reset each time the loop is run.
for x in xrange(min, max, step):
    print (" " * space) + ("*" * x) # I want you to concatenate space(s) and the asterisks together. 
space += **1** # Add 1 to space so next time the loop reiterates the space will be larger by **1**