|
发表于 2025-9-12 11:31:41
|
显示全部楼层
您好!看到您尝试解决第023讲的课后测试题,很棒!不过您的代码中有一些错误,我来帮您分析和修正。
首先,您的代码:
- x=
- matrix = [[3, 8, 7],
- [9, 11, 13],
- [15, 16, 17]]
- for i in range(3):
- a=min(matrix)
- b=matrix.index(a)
- for j in range(3):
- x=matrix
- if max(x)==a:
- print(a)
复制代码
主要问题:
- min(matrix):这试图找整个矩阵的最小值,但matrix是列表的列表,Python会比较子列表,而不是数值,这会导致错误。
- matrix.index(a):因为a是数值,但matrix包含子列表,index()方法无法直接找到数值的索引。
- 循环内部逻辑混乱:x=matrix重复赋值,且max(x)找的是整个矩阵的最大值,不是列的最大值。
正确的思路是:
1. 遍历每一行,找到该行的最小值。
2. 记录这个最小值所在的列索引。
3. 检查这个值是否也是其所在列的最大值。
4. 如果是,输出幸运数字。
以下是修正后的代码,适用于任何 m x n 矩阵:
- matrix = [[3, 8, 7],
- [9, 11, 13],
- [15, 16, 17]]
- 幸运数字 = [] # 用于存储所有幸运数字
- for i in range(len(matrix)):
- # 找到当前行的最小值
- row_min = min(matrix[i])
- # 找到最小值在当前行中的列索引
- col_index = matrix[i].index(row_min)
- # 获取该列的所有元素
- column = [row[col_index] for row in matrix]
- # 检查是否是该列的最大值
- if max(column) == row_min:
- 幸运数字.append(row_min)
- if 幸运数字:
- print("矩阵中的幸运数字是:", 幸运数字)
- else:
- print("没有找到幸运数字")
复制代码
解释:
- 使用min(matrix[i])找当前行的最小值。
- matrix[i].index(row_min)找到最小值所在的列索引。
- 列表推导式[row[col_index] for row in matrix]获取整列数据。
- 比较列最大值和行最小值,判断是否为幸运数字。
在您的矩阵中,运行后会输出:矩阵中的幸运数字是: [15],因为15在第一行最小,且在第一列最大。
如果还有疑问,请随时追问!继续加油!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|