在这里,它们都给出相同的结果,但是一个比另一个更复杂,而我在理解那个上有麻烦。有人可以解释这两者之间的区别吗? 这是我写的:
answer = [1,2,3,4,5,4,3,2,1]
for x in answer:
print("*"* x)
这是复杂的一个:
n=5;
for i in range(n):
for j in range(i):
print ('* ', end="")
print('')
for i in range(n,0,-1):
for j in range(i):
print('* ', end="")
print('')
有人可以解释第二个吗?
答案 0 :(得分:-1)
range(start, stop, step)
在start
的增量/减量范围内从end
到-但不包括-step
的所有元素上都是可迭代的。因此:
list(range(5)) == [0,1,2,3,4]
list(range(5, 0, -1)) == [5,4,3,2,1]
因此,列表[1,2,3,4,5,4,3,2,1]
的真实等价项为
list(range(1, 5)) + list(range(5, 0, -1))
而且
print("*" * x) # "*" * 5 == "*****"
可以写成一个循环:
for _ in range(x):
print("*", end='') # prints "*", not ending with default line break "\n"
print() # adds the line break