ri7ki 发表于 2023-4-4 09:34:21

Python 第23課動手題第1題

matrix = [,,,]
row=len(matrix)
col=len(matrix)
min_row=*row
max_col=*col
for i in range(row):
    for j in range(col):
      min_row=min(min_row,matrix)
      max_col=max(max_col,matrix)

#這裡為什麼多寫一次相同的for循環,為什麼把下面的if移到上面的循環裡就輸出不了正確值?{:10_266:}

for i in range(row):
    for j in range(col):
      if min_row==max_col==matrix:
            print(matrix)

isdkz 发表于 2023-4-4 10:50:23

在這段代碼中,你正在尋找矩陣中的鞍點,即每行中的最小值和每列中的最大值。為了找到鞍點,你首先需要找到每行的最小值和每列的最大值。這就是為什麼你需要兩個嵌套for循環。

在第一個嵌套for循環中,你計算每行的最小值(min_row)和每列的最大值(max_col)。這個循環確保在比較之前,所有的最小行值和最大列值都已經計算好了。

然後,在第二個嵌套for循環中,你在檢查每個元素是否是其所在行的最小值和所在列的最大值。如果滿足這些條件,那麼這個元素就是鞍點,你將其輸出。

如果你把下面的if語句移到上面的循環中,那麼對於矩陣的每個元素,你將在計算最小行值和最大列值的同時檢查是否滿足鞍點條件。這樣做將導致在所有最小行值和最大列值計算完成之前就試圖找到鞍點,從而導致錯誤的結果。

總之,你需要兩個獨立的嵌套for循環,因為第一個循環用於計算每行的最小值和每列的最大值,而第二個循環用於檢查並輸出鞍點。在第一個循環中檢查鞍點將導致在所有最小行值和最大列值計算完成之前就試圖找到鞍點,這將導致不正確的結果。

ri7ki 发表于 2023-4-4 11:58:23

isdkz 发表于 2023-4-4 10:50
在這段代碼中,你正在尋找矩陣中的鞍點,即每行中的最小值和每列中的最大值。為了找到鞍點,你首先需要找到 ...

感謝大佬!{:10_275:}

sfqxx 发表于 2023-4-4 17:32:03

学习一下
页: [1]
查看完整版本: Python 第23課動手題第1題