python爱好者. 发表于 2022-1-8 09:31:23

请问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)

我试过了,这里去掉第 24 行的代码也能正常运行
所以说,第 24 行代码究竟有什么作用?!!!
哪位大佬可以解释一下的?{:10_257:}
解释出来的人,重金悬赏20鱼币!!!{:10_298:}

大马强 发表于 2022-1-8 09:31:24

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)

    # 从右往左遍历
    for col in range(right - 1, left, -1):# 不跑
      result.append(matrix)

    # 从下往上遍历
    for row in range(bottom, top, -1):# 这个会多跑一遍 1, 5, 9, 9, 5
      result.append(matrix)

    left = left + 1
    right = right - 1
    top = top + 1
    bottom = bottom - 1

print(result)

python爱好者. 发表于 2022-1-8 09:38:07

兄弟们,加油,一起来思考!

大马强 发表于 2022-1-8 09:47:10

本帖最后由 大马强 于 2022-1-8 09:48 编辑

跑是能跑,但是你看他的结果已经变了,
后面跟着的两个for循环恰好落在前边的for循环中,这才没有报错,
如果你把那两个循环提外边的话。在没有if的束缚下
matrix = [,
          ,
          ]
这个矩阵的结果为

而源代码结果为 ,所以区别在这

python爱好者. 发表于 2022-1-8 10:28:16

大马强 发表于 2022-1-8 09:50


懵懵懂懂

python爱好者. 发表于 2022-1-8 10:29:53

python爱好者. 发表于 2022-1-8 10:28
懵懵懂懂

eee懂了,牛呀!大佬!
页: [1]
查看完整版本: 请问python新版课程中的第25讲课后作业答案最后一个为什么要有着一条语句: