如何用星号制作金字塔

时间:2014-10-24 05:23:05

标签: python for-loop range

我试图创建一个使用范围的程序,输出一个由星号组成的三角形。例如:

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

我无法理解如何做到这一点,我现在所拥有的只是:

number=10
for i in range(0,number,-1):
    number="*"
    print i

我知道这显然是错的,但我无法弄清楚如何去做。一些帮助将不胜感激,并记住我必须使用range

3 个答案:

答案 0 :(得分:4)

number = 10
for i in range(number):
    print "*" * i

请记住,对于任何字符串,乘法运算只会连接该字符串的副本。例如,"a" * 5 = "aaaaa"。这就是这个难题的关键。

答案 1 :(得分:3)

你非常接近。让我编辑你自己的代码,指出你出错的地方,而不是编写我自己的代码。关于范围的一些事情是:

  • range(start,stop,steps)是语法。当你说range(0,100)时,请记住,它会取0到99之间的值(总计数为100,但不包括100)。
  • start和steps的默认值分别为0和1.所以range(0,10) = range(0,10,1)以及如果必须从0开始则不需要再次指定它。现在range(0,10) = range(0,10,1) = range(10)
  • 只有当起始值大于停止值时,
  • 步骤才能为负值。 因此您的代码无法按预期工作
number=10                    ## assigning 10 to number
for i in range(0,number,-1): ## remove -1
    number="*"               ## totally unnecessary 
    print i
number=10
for i in range(0,number,1):  ## no need to mention the steps by default it'll be 1
    print "*"*i              ## * is multiplied i times and printed. 

答案 2 :(得分:1)

我只是做

for i in range(1,11): #11 because it stops before the second number
    print '*' * i 

您也可以这样做:

 s= '' #initialize our string
 for i in range(10):
     s+='*' #add an asterisk for each iteration
     print s #print our one asterisk richer string

请注意,“foo + = bar”实际上只是“foo = foo + bar”的缩写

它们功能相同。