鱼C论坛

 找回密码
 立即注册
查看: 1380|回复: 18

[已解决]请问这个if条件句错在哪里了啊,应该怎样修改呢?

[复制链接]
发表于 2023-8-1 21:15:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码是找到一个随机整数矩阵的幸运数(同时满足同一行的所有元素中最小,并且在同一列的所有元素中最大)

还请大佬带带,感激不尽!!!


"""随机整数矩阵找幸运数"""
import random
m = int(input("请输入矩阵的行数:"))
n = int(input("请输入矩阵的列数:"))
print("这个随机矩阵的幸运数如下:")

matrix = range(m)
for i in range(m):
    martix[i] = random.sample(range(2025),n)

for i in range(m):
    for j in range(n):
        if matrix[i][j] <= matrix[i][k] for k in range(n) and matrix[i][j] >= matrix[l][n] for l in range(m):
            print(matrix[i][j])


最佳答案
2023-8-2 11:13:44


  1. import random

  2. m = int(input("请输入矩阵的行数:"))
  3. n = int(input("请输入矩阵的列数:"))

  4. matrix = [[random.randint(0, 2025) for j in range(n)] for i in range(m)]

  5. #matrix也可以这样写:
  6. #matrix = []
  7. #for i in range(m):
  8. #   matrix.append(random.choices(range(2025), k=n))

  9. lucky_number_found = False  # 用于记录是否找到幸运数

  10. for i in range(m):
  11.     for j in range(n):
  12.         if all(matrix[i][j] <= matrix[i][k] for k in range(n)) and all(matrix[i][j] >= matrix[l][j] for l in range(m)):
  13.             if not lucky_number_found:
  14.                 print("这个随机矩阵的幸运数如下:")
  15.                 lucky_number_found = True
  16.             print(matrix[i][j])

  17. if not lucky_number_found:
  18.     print("很不幸,这个随机矩阵没有幸运数")  
复制代码


运行结果截图发来看看
5.png

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-1 21:15:50 | 显示全部楼层
在给出的代码中,if条件句有一些语法错误。具体来说,使用for循环生成条件语句时的写法是有问题的。下面是对代码的修改建议:
  1. import random
  2. m = int(input("请输入矩阵的行数:"))
  3. n = int(input("请输入矩阵的列数:"))
  4. print("这个随机矩阵的幸运数如下:")
  5. matrix = []
  6. for i in range(m):
  7.     matrix.append(random.sample(range(2025), n))
  8. for i in range(m):
  9.     for j in range(n):
  10.         if all(matrix[i][j] <= matrix[i][k] for k in range(n)) and all(matrix[i][j] >= matrix[l][j] for l in range(m)):
  11.             print(matrix[i][j])
复制代码

修改后的代码主要做了以下几点调整:
- 将matrix的定义改为空列表。
- 使用append方法将生成的随机列表添加到matrix中。
- 在if条件句中使用正确的语法,使用all函数来判断同一行中所有元素满足最小条件,以及同一列中所有元素满足最大条件。

希望这能帮助到你!如果你还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 21:15:53 | 显示全部楼层
在提供的代码中,if条件语句有语法错误。Python中的if语句应该采用特定的格式来表达条件判断,而该代码使用了类似列表推导式的语法,导致错误。在这里,你想找到一个随机整数矩阵中的幸运数,满足同一行的所有元素中最小,并且在同一列的所有元素中最大。

你可以修改代码如下:

  1. import random

  2. m = int(input("请输入矩阵的行数:"))
  3. n = int(input("请输入矩阵的列数:"))
  4. print("这个随机矩阵的幸运数如下:")

  5. # 创建随机整数矩阵
  6. matrix = []
  7. for i in range(m):
  8.     matrix.append(random.sample(range(2025), n))

  9. # 找到幸运数并打印
  10. for i in range(m):
  11.     for j in range(n):
  12.         # 判断是否为同一行最小和同一列最大
  13.         if matrix[ i][j] == min(matrix[ i]) and matrix[ i][j] == max(matrix[k][j] for k in range(m)):
  14.             print(matrix[ i][j])
复制代码


修改后的代码使用了嵌套的for循环遍历矩阵,并对每个元素进行条件判断。首先, matrix[ i][j] == min(matrix[ i]) 用于判断是否为同一行中的最小值,然后 matrix[ i][j] == max(matrix[k][j] for k in range(m)) 用于判断是否为同一列中的最大值。只有当这两个条件都满足时,才会打印出该幸运数。

请注意,由于代码中使用的变量名在原始代码中存在拼写错误(martix应为matrix),我在修改后的代码中已经修正了这个问题。现在你可以使用这个修改后的代码来找到随机整数矩阵的幸运数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-1 21:26:02 | 显示全部楼层
学习编程中的Ben 发表于 2023-8-1 21:15
在给出的代码中,if条件句有一些语法错误。具体来说,使用for循环生成条件语句时的写法是有问题的。下面是 ...

改了之后matrix.append那句有问题,系统报错是range没有这个用法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 21:26:35 | 显示全部楼层
小儿无赖 发表于 2023-8-1 18:26
改了之后matrix.append那句有问题,系统报错是range没有这个用法

  1. import random

  2. m = int(input("请输入矩阵的行数:"))
  3. n = int(input("请输入矩阵的列数:"))

  4. print("这个随机矩阵的幸运数如下:")

  5. matrix = [[random.randint(0, 2025) for j in range(n)] for i in range(m)]

  6. for i in range(m):
  7.     min_row = min(matrix[i])
  8.     col_index = matrix[i].index(min_row)
  9.     if all(matrix[k][col_index] <= min_row for k in range(m)):
  10.         print(min_row)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-1 21:26:47 | 显示全部楼层
isdkz 发表于 2023-8-1 21:15
在提供的代码中,if条件语句有语法错误。Python中的if语句应该采用特定的格式来表达条件判断,而该代码使用 ...

改了之后matrix.append那句有问题,系统报错是range没有这个用法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 21:27:34 | 显示全部楼层
小儿无赖 发表于 2023-8-1 18:26
改了之后matrix.append那句有问题,系统报错是range没有这个用法
  1. import random

  2. m = int(input("请输入矩阵的行数:"))
  3. n = int(input("请输入矩阵的列数:"))

  4. print("这个随机矩阵的幸运数如下:")

  5. matrix = []
  6. for i in range(m):
  7.     matrix.append(random.sample(range(2025), n))

  8. for i in range(m):
  9.     for j in range(n):
  10.         if matrix[i][j] <= min(matrix[i]) and matrix[i][j] >= max(matrix[k][j] for k in range(m)):
  11.             print(matrix[i][j])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 21:29:26 | 显示全部楼层
  1. import random

  2. m = int(input("请输入矩阵的行数: "))
  3. n = int(input("请输入矩阵的列数: "))
  4. print("这个随机矩阵的幸运数如下:")

  5. matrix = []
  6. for i in range(m):
  7.     matrix.append(random.choices(range(2025), k=n))

  8. for i in range(m):
  9.     for j in range(n):
  10.         if all(matrix[i][j] <= matrix[i][k] for k in range(n)) and all(matrix[i][j] >= matrix[l][j] for l in range(m)):
  11.             print(matrix[i][j])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-1 21:36:16 | 显示全部楼层

我改成下面的样子,但怎么才能让最后一句话只打印一次啊,谢谢
代码如下:
"""随机整数矩阵找幸运数"""

import random

m = int(input("请输入矩阵的行数:"))
n = int(input("请输入矩阵的列数:"))
print("这个随机矩阵的幸运数如下:")

matrix = [[random.randint(0, 2025) for j in range(n)] for i in range(m)]

#matrix也可以这样写:
#matrix = []
#for i in range(m):
#   matrix.append(random.choices(range(2025), k=n))

for i in range(m):
    for j in range(n):
        if all(matrix[j] <= matrix[k] for k in range(n)) and all(matrix[j] >= matrix[l][j] for l in range(m)):
            print(matrix[j])
        else:
            print("很不幸,这个随机矩阵没有幸运数")
            break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 21:38:39 | 显示全部楼层
小儿无赖 发表于 2023-8-1 21:36
我改成下面的样子,但怎么才能让最后一句话只打印一次啊,谢谢
代码如下:
"""随机整数矩阵找幸运数""" ...
  1. import random

  2. m = int(input("请输入矩阵的行数:"))
  3. n = int(input("请输入矩阵的列数:"))
  4. print("这个随机矩阵的幸运数如下:")

  5. matrix = [[random.randint(0, 2025) for j in range(n)] for i in range(m)]

  6. #matrix也可以这样写:
  7. #matrix = []
  8. #for i in range(m):
  9. #   matrix.append(random.choices(range(2025), k=n))

  10. for i in range(m):
  11.     for j in range(n):
  12.         if all(matrix[j] <= matrix[k] for k in range(n)) and all(matrix[j] >= matrix[l][j] for l in range(m)):
  13.             print(matrix[j])
  14.             break
  15.         else:
  16.             print("很不幸,这个随机矩阵没有幸运数")
  17.             break
复制代码

这样试试?求最佳答案QAQ
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-1 21:57:51 | 显示全部楼层
学习编程中的Ben 发表于 2023-8-1 21:38
这样试试?求最佳答案QAQ

还是不行,太难了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 21:59:08 | 显示全部楼层
小儿无赖 发表于 2023-8-1 21:57
还是不行,太难了


那你把最佳给我呗我真的很需要,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 22:11:26 | 显示全部楼层
看起来你的程序是在寻找一个"幸运数",这个数在其所在的行中是最大的,而在其所在的列中是最小的。这个概念在数学中也被称为鞍点。

你的代码逻辑大部分都是正确的,但是有一点需要注意。在你的代码中,无论是否找到幸运数,最后都会打印"很不幸,这个随机矩阵没有幸运数"。这是因为这句打印语句并没有放在合适的位置。如果没有找到幸运数,应该在循环结束后打印这句话。

另一个需要注意的地方是,你的代码只会找到并打印出第一个幸运数,然后就会通过break语句跳出循环。如果你想找到所有的幸运数,应该去掉break语句。

下面是修改后的代码:

  1. import random

  2. m = int(input("请输入矩阵的行数:"))
  3. n = int(input("请输入矩阵的列数:"))

  4. matrix = [[random.randint(0, 2025) for j in range(n)] for i in range(m)]

  5. #matrix也可以这样写:
  6. #matrix = []
  7. #for i in range(m):
  8. #   matrix.append(random.choices(range(2025), k=n))

  9. lucky_number_found = False  # 用于记录是否找到幸运数

  10. for i in range(m):
  11.     for j in range(n):
  12.         if all(matrix[i][j] <= matrix[i][k] for k in range(n)) and all(matrix[i][j] >= matrix[l][j] for l in range(m)):
  13.             if not lucky_number_found:
  14.                 print("这个随机矩阵的幸运数如下:")
  15.                 lucky_number_found = True
  16.             print(matrix[i][j])

  17. if not lucky_number_found:
  18.     print("很不幸,这个随机矩阵没有幸运数")[
复制代码

这个修改后的代码会找到并打印出所有的幸运数,如果没有找到幸运数,会在循环结束后打印"很不幸,这个随机矩阵没有幸运数"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-1 22:45:13 | 显示全部楼层
  1. import random

  2. m = int(input("请输入矩阵的行数:"))
  3. n = int(input("请输入矩阵的列数:"))
  4. print("这个随机矩阵的幸运数如下:")

  5. matrix = []
  6. for i in range(m):
  7.     matrix.append(random.sample(range(2025), n))

  8. for i in range(m):
  9.     for j in range(n):
  10.         if matrix[i][j] <= min(matrix[i]) and matrix[i][j] >= max(matrix[l][j] for l in range(m)):
  11.             print(matrix[i][j])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 09:25:21 | 显示全部楼层
sfqxx 发表于 2023-8-1 22:11
看起来你的程序是在寻找一个"幸运数",这个数在其所在的行中是最大的,而在其所在的列中是最小的。这个概念 ...

最后一句多了一个[,不然我都给你设置成最佳答案了,你改一下我就给你设置,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 11:13:44 | 显示全部楼层    本楼为最佳答案   


  1. import random

  2. m = int(input("请输入矩阵的行数:"))
  3. n = int(input("请输入矩阵的列数:"))

  4. matrix = [[random.randint(0, 2025) for j in range(n)] for i in range(m)]

  5. #matrix也可以这样写:
  6. #matrix = []
  7. #for i in range(m):
  8. #   matrix.append(random.choices(range(2025), k=n))

  9. lucky_number_found = False  # 用于记录是否找到幸运数

  10. for i in range(m):
  11.     for j in range(n):
  12.         if all(matrix[i][j] <= matrix[i][k] for k in range(n)) and all(matrix[i][j] >= matrix[l][j] for l in range(m)):
  13.             if not lucky_number_found:
  14.                 print("这个随机矩阵的幸运数如下:")
  15.                 lucky_number_found = True
  16.             print(matrix[i][j])

  17. if not lucky_number_found:
  18.     print("很不幸,这个随机矩阵没有幸运数")  
复制代码


运行结果截图发来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 12:41:04 | 显示全部楼层
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-2 15:45:45 | 显示全部楼层
小儿无赖 发表于 2023-8-2 06:25
最后一句多了一个[,不然我都给你设置成最佳答案了,你改一下我就给你设置,谢谢
  1. import random

  2. m = int(input("请输入矩阵的行数:"))
  3. n = int(input("请输入矩阵的列数:"))

  4. matrix = [[random.randint(0, 2025) for j in range(n)] for i in range(m)]

  5. #matrix也可以这样写:
  6. #matrix = []
  7. #for i in range(m):
  8. #   matrix.append(random.choices(range(2025), k=n))

  9. lucky_number_found = False  # 用于记录是否找到幸运数

  10. for i in range(m):
  11.     for j in range(n):
  12.         if all(matrix[i][j] <= matrix[i][k] for k in range(n)) and all(matrix[i][j] >= matrix[l][j] for l in range(m)):
  13.             if not lucky_number_found:
  14.                 print("这个随机矩阵的幸运数如下:")
  15.                 lucky_number_found = True
  16.             print(matrix[i][j])

  17. if not lucky_number_found:
  18.     print("很不幸,这个随机矩阵没有幸运数")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 21:00:15 | 显示全部楼层
sfqxx 发表于 2023-8-2 11:13
运行结果截图发来看看
  1. 请输入矩阵的行数:98
  2. 请输入矩阵的列数:89
  3. 这个随机矩阵的幸运数如下:
  4. [8, 6, 1, 5, 5, 24, 5, 17, 16, 18, 18, 1, 17, 23, 16, 6, 19, 3, 11, 7, 0, 20, 14, 17, 7, 15, 8, 30, 17, 9, 23, 19, 3, 2, 43, 5, 6, 32, 4, 12, 8, 4, 7, 41, 11, 6, 12, 5, 9, 6, 4, 9, 10, 12, 11]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-14 21:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表