如何用星号制作金字塔

1 投票
3 回答
1028 浏览
提问于 2025-04-29 10:13

我正在尝试写一个程序,利用范围(range)来输出一个由星号组成的三角形。例如:

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

不过我现在还不太清楚怎么做,我现在只有:

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

我知道这显然是错的,但我就是想不出来该怎么做。如果能得到一些帮助就太好了,记得我必须使用 range

暂无标签

3 个回答

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”的简写。

它们的功能是一样的。

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

记住,对于任何字符串,乘法操作只是把这个字符串重复连接在一起。例如,"a" * 5 = "aaaaa"。这就是这个问题的关键。

3

你离正确答案很近。让我来修改一下你的代码,指出你哪里出错了,而不是给你写一段新的代码。关于范围(range),有几点需要注意:

  • range(start, stop, steps)是它的语法。当你写range(0, 100)时,要记住它会取从0到99的值(总共100个数,但不包括100)。
  • 默认情况下,开始值(start)是0,步长(steps)是1。所以range(0, 10) = range(0, 10, 1),如果你要从0开始,就不需要再写一次0。因此,range(0, 10) = range(0, 10, 1) = range(10)
  • 步长(steps)可以是负数,但前提是开始值(start)要大于结束值(stop)。所以你的代码没有按预期工作就是这个原因。
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. 

撰写回答