如何用星号制作金字塔
我正在尝试写一个程序,利用范围(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.