我写了一个程序,允许用户输入菱形的高度,并使用循环以星号打印出来。我的代码现在看起来像这样:
它将会输出以下这种菱形形状:
diamond = int(input("Height": )
for i in range(diamond-1):
print((diamond-i) * " " + (2*i+1) * "*")
for i in range(diamond-1, -1, -1):
print((diamond - i) * " " + (2 * i + 1) * "*")
钻石看起来就像这样完美无缺 (钻石 == 6):
*
***
*****
*******
*********
***********
*********
*******
*****
***
*
现在如果我进行一些更改,将反向循环写成如下:
for i in reversed(range(diamond-1)):
print((diamond - i) * " " + (2 * i + 1) * "*")
它将会输出以下这种菱形形状:
*
***
*****
*******
*********
*********
*******
*****
***
*
所以我的问题是:第一个向后的循环和我写的第二个有什么区别?为什么它们结果会如此不同?
diamond
为5
时,list(reversed(range(diamond-1)))
为[3, 2, 1, 0]
,而list(range(diamond-1, -1, -1))
为[4, 3, 2, 1, 0]
。这是因为范围range(5)
是从零到四的数字,不包括五。 - Patrick Haughrange(diamond-1, -1, -1)
包括diamond-1
,而range(diamond-1)
则不包括。 - DYZ