Python课后作业第25节最后一题!
求教各位大佬,为什么程序向右向下遍历的时候,判断语句是小于等于。向左向上遍历的时候为什么就是小于了?源码:
matrix = [,
,
]
rows = len(matrix)
cols = len(matrix)
left = 0
right = cols - 1
top = 0
bottom = rows - 1
result = []
while left <= right and top <= bottom:
# 从左往右遍历
for col in range(left, right + 1):
result.append(matrix)
# 从上往下遍历
for row in range(top + 1, bottom + 1):
result.append(matrix)
if left < right and top < bottom:
# 从右往左遍历
for col in range(right - 1, left, -1):
result.append(matrix)
# 从下往上遍历
for row in range(bottom, top, -1):
result.append(matrix)
left = left + 1
right = right - 1
top = top + 1
bottom = bottom - 1
print(result) 不会,顺领一个鱼币
@isdkz 在 range(right - 1, left, -1)和 range(bottom, top, -1) 中 right 与 left 相等 或 top 与 bottom 相等都是没有意义的
假设 right 与 left 都为 0,那么 range(right - 1, left, -1) 即为 range(-1, 0, -1)
range(-1, 0, -1) 是迭代不出任何元素的
同理, range(bottom, top, -1) 也一样
所以在从右往左遍历与从下往上遍历中加不加等号都一样,还不如不要等号
顺领一个鱼币 isdkz 发表于 2023-2-18 22:00
在 range(right - 1, left, -1)和 range(bottom, top, -1) 中 right 与 left 相等 或 top 与 bottom 相等 ...
但是在从上往下遍历的过程中,top=bottom也没有任何意义哇?
for row in range(top + 1, bottom + 1):
result.append(matrix) 不吃辣的雾都人 发表于 2023-2-18 22:27
但是在从上往下遍历的过程中,top=bottom也没有任何意义哇?
for row in range(top + 1, bottom + 1):
...
有意义,因为 left <= right and top <= bottom 作为 while 循环的循环条件,而在 while 循环里面可不止有 for 循环,还有以下代码:
left = left + 1
right = right - 1
top = top + 1
bottom = bottom - 1
同意 我的理解是:for in range 的函数特点决定的,最后一个值是不执行的,这时的小于判断就行了,等于加上去也没有执行,但不影响结果。 顺领渔币 我才看到第9章,所以
顺领一个鱼币
页:
[1]