向后循环,创建菱形图案
Backwards looping, creating a diamond pattern
我制作了一个程序,允许用户输入钻石的高度,它会使用循环打印星号。我的代码现在看起来像这样:
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 = 6
>>> range(diamond-1, -1, -1)
[5, 4, 3, 2, 1, 0]
>>> list(reversed(range(diamond-1)))
[4, 3, 2, 1, 0]
range
包括起点,不包括终点。
我制作了一个程序,允许用户输入钻石的高度,它会使用循环打印星号。我的代码现在看起来像这样:
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 = 6
>>> range(diamond-1, -1, -1)
[5, 4, 3, 2, 1, 0]
>>> list(reversed(range(diamond-1)))
[4, 3, 2, 1, 0]
range
包括起点,不包括终点。