课后作业求助!!第025讲:列表(VII)!!
各位大佬在答案里 while 循环中 if left < right and top < bottom:这个判断语句 是起到什么作用的
彻底无法理解这个判断是干嘛用的
[课后作业] 第025讲:列表(VII)
1. 请按照顺时针螺旋顺序输出矩阵中的所有元素。
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)
自己的代码如下:变量名用汉字写便于我的理解{:5_91:}
matrix = [,
,
]
长 = len(matrix)
宽 = len(matrix)
上 = 0
下 = 宽 - 1
左 = 0
右 = 长 - 1
结果 = []
while 左 <= 右 and 上 <= 下:
for 行 in range(左, 右 + 1):
结果.append(matrix[上][行])
for 列 in range(上 + 1, 下 + 1):
结果.append(matrix[列][右])
for 行 in range(右 - 1, 左, -1):
结果.append(matrix[下][行])
for 列 in range(下, 上, -1):
结果.append(matrix[列][左])
左 = 左 + 1
右 = 右 - 1
上 = 上 + 1
下 = 下 - 1
print(结果)
这个判断语句 if left < right and top < bottom 的作用是确保矩阵中还有剩余的未遍历的元素,才会执行循环内的代码。
如果矩阵中已经没有未遍历的元素,那么循环就不再执行,程序就可以结束了。
具体来说,当左右指针或上下指针相遇时,说明此时只剩下一行或一列未被遍历。
如果没有这个判断语句,程序会继续执行,导致重复遍历已经遍历过的元素或者越界。
页:
[1]