h793007401 发表于 2022-4-22 13:55:32

大佬帮我看看我的程序错在哪里,求幸运数

#对于输入的任意一个矩阵,如果某一个元素的值在同一行的所有元素中最小,#
#并且在同一列的所有元素中最大,那么该元素便是幸运数字。#



m=input('请输入矩阵的行数:')
n=input('请输入矩阵的列数:')
m=int(m)
n=int(n)
matrix=[]
Min=[]
Max=[]

for i in range(m):
    matrix.append([])
    for j in range(n):
      print('第',i+1,'行第',j+1,'列是')
      x=input('')
      x=int(x)
      matrix.append(x)

print(matrix)

for i in range(m):
    for j in range(n):
   Min.append(min,Min])
   Max.append(max,Max])
      
   
for i in range(m):
    for j in range(n):
      if matrix == Min and matrix == Max:
            print(matrix)

zowen 发表于 2022-4-23 01:27:29

问题没找出来,我看不懂min,Min] 这段程序表达的含义

不过按你出题的逻辑改了一段同样功能的
m=input('请输入矩阵的行数:')
n=input('请输入矩阵的列数:')
m=int(m)
n=int(n)
matrix=[]
Min=[]
Max=[]

for i in range(m):
    matrix.append([])
    for j in range(n):
      print('第',i+1,'行第',j+1,'列是')
      x=input('')
      x=int(x)
      matrix.append(x)

print(matrix)

for i in range(m):
    for j in range(n):
      Min.append(matrix)    #将所有数字添加到Min列表
      temp = Min.index(min(Min)) #计算Min列表中最小的数字所在的对应序号
      while True:               #得出最小值所在的列数               
            if temp - n > 0:
                temp = temp -n
            if temp - n < 0:
                temp = temp
                break
      print(temp)

for i in range(m):      
    for j in range(n):            
            Max.append(matrix)#将最小值所在列数的数字添加到Max列表
            temp_1 = max(Max)         #求出列表中最大值
print(temp_1)

zowen 发表于 2022-4-23 01:34:31

zowen 发表于 2022-4-23 01:27
问题没找出来,我看不懂min,Min] 这段程序表达的含义

不过按你出题的逻辑改了一段同样功能的
...

不过这么写有个BUG 受限于返回列表最小值 他只能返回相同最小值第一次出现的列数
例如
【3 8 6】
【6 3 6】
【6 6 3】
每一行的最小值都是3
但是 所对应的3个列里面 最大值是8
不过第一次出现3是在第一列
所以 计算出的最大值限定在了第一列的 6 并不是实际的最大值
页: [1]
查看完整版本: 大佬帮我看看我的程序错在哪里,求幸运数