向后循环,创建菱形图案

时间:2017-01-25 20:31:42

标签: python loops ascii-art

我制作了一个程序,允许用户输入钻石的高度,并使用循环在星号中打印出一个。我的代码现在看起来像这样:

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) * "*")

它将打印出这样的钻石:

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

所以我的问题是:第一个向后循环和我写的第二个循环有什么区别?为什么他们变得如此不同?

1 个答案:

答案 0 :(得分:2)

因为它们的范围不同:

>>> diamond = 6
>>> range(diamond-1, -1, -1)
[5, 4, 3, 2, 1, 0]
>>> list(reversed(range(diamond-1)))
[4, 3, 2, 1, 0]

range包含起点,但不包括终点。