求大佬帮我看看我写的第023讲:列表(V)| 课后测试解法行不行
1. 请编程找出矩阵中的幸运数字。说明:假设给定一个 m * n 的矩阵(矩阵中数值的取值范围是 0~1024,且各不相同),如果某一个元素的值在同一行的所有元素中最小,并且在同一列的所有元素中最大,那么该元素便是幸运数字。
假设给定的矩阵如下:
matrix = [,
,
]
我的解法如下:
x=
matrix = [,
,
]
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)
您好!看到您尝试解决第023讲的课后测试题,很棒!不过您的代码中有一些错误,我来帮您分析和修正。
首先,您的代码:
x=
matrix = [,
,
]
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 = [,
,
]
幸运数字 = []# 用于存储所有幸运数字
for i in range(len(matrix)):
# 找到当前行的最小值
row_min = min(matrix)
# 找到最小值在当前行中的列索引
col_index = matrix.index(row_min)
# 获取该列的所有元素
column = for row in matrix]
# 检查是否是该列的最大值
if max(column) == row_min:
幸运数字.append(row_min)
if 幸运数字:
print("矩阵中的幸运数字是:", 幸运数字)
else:
print("没有找到幸运数字")
解释:
- 使用min(matrix)找当前行的最小值。
- matrix.index(row_min)找到最小值所在的列索引。
- 列表推导式 for row in matrix]获取整列数据。
- 比较列最大值和行最小值,判断是否为幸运数字。
在您的矩阵中,运行后会输出:矩阵中的幸运数字是: ,因为15在第一行最小,且在第一列最大。
如果还有疑问,请随时追问!继续加油!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 把行数/列数都写死成了3,还需要额外数组x才能运行哦~~
代码:
def lucky_numbers(matrix):
m, n = len(matrix), len(matrix)
ans = []
for i, row in enumerate(matrix):
a = min(row) # 该行最小
j = row.index(a) # 所在列
# 看看该列是否以它为最大
if a == max(matrix for r in range(m)):
ans.append(a)
return ans
matrix = [,
,
]
print(lucky_numbers(matrix)) #
不二如是 发表于 2025-9-12 12:11
把行数/列数都写死成了3,还需要额外数组x才能运行哦~~
代码:
那我如果这么写呢
x=*len(matrix)
for i in range(len(matrix)):
a=min(matrix)
b=matrix.index(a)
for j in range(len(matrix)):
x=matrix
if max(x)==a:
print(a) 不二如是 发表于 2025-9-12 12:11
把行数/列数都写死成了3,还需要额外数组x才能运行哦~~
代码:
截图 星雨幽幽 发表于 2025-9-12 16:30
截图
?? matrix = [,
,
]
row_num = len(matrix)
col_num = len(matrix)
row_list =
col_list =
for i in range(row_num):
for j in range(col_num):
if matrix == row_list and matrix == col_list:
print(matrix)
页:
[1]