血光寒 发表于 2023-3-11 04:08:36

课后作业求助!!第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(结果)

isdkz 发表于 2023-3-11 05:03:43

这个判断语句 if left < right and top < bottom 的作用是确保矩阵中还有剩余的未遍历的元素,才会执行循环内的代码。

如果矩阵中已经没有未遍历的元素,那么循环就不再执行,程序就可以结束了。

具体来说,当左右指针或上下指针相遇时,说明此时只剩下一行或一列未被遍历。

如果没有这个判断语句,程序会继续执行,导致重复遍历已经遍历过的元素或者越界。
页: [1]
查看完整版本: 课后作业求助!!第025讲:列表(VII)!!