鱼C论坛

 找回密码
 立即注册
查看: 1062|回复: 4

[已解决]代码出错求助

[复制链接]
发表于 2023-6-7 23:09:11 | 显示全部楼层 |阅读模式
1鱼币
  1. import random
  2. my_matrix=[[0]*88]*88
  3. for i in range(0,88):
  4.     for j in range(0,88):
  5.         my_matrix[i][j]=random.randint(0,1024)
  6. x=int(input("请输入一个代匹配的整数:"))
  7. for i in range(0,88):
  8.     for j in range(0,88):
  9.         if my_matrix[i][j]==x:
  10.             print(i,j,sep=" ",end="")
  11.             print()
复制代码


如图所示,我的代码为什么不对呢,问题在哪儿,求助。
最佳答案
2023-6-7 23:09:12
你的代码的问题在于对二维列表的初始化。这里,你是这样初始化的:

  1. my_matrix=[[0]*88]*88
复制代码


这将导致所有行引用的是相同的列表,也就是说,所有行都是同一个列表的引用,因此修改任何一行都会影响其他所有行。你可以想象这个列表就像88个镜像,修改任何一个镜像都会反映在其他所有镜像中。

因此,你应该这样初始化二维列表:

  1. my_matrix = [[0 for _ in range(88)] for _ in range(88)]
复制代码


这将创建一个真正的二维列表,其中每一行都是独立的列表。你修改一行时,不会影响其他行。

所以,你的代码应该修改为:

  1. import random

  2. my_matrix = [[0 for _ in range(88)] for _ in range(88)]
  3. for i in range(0,88):
  4.     for j in range(0,88):
  5.         my_matrix[i][j] = random.randint(0,1024)

  6. x = int(input("请输入一个待匹配的整数:"))

  7. for i in range(0,88):
  8.     for j in range(0,88):
  9.         if my_matrix[i][j] == x:
  10.             print(i, j, sep=" ", end="")
  11.             print()
复制代码


这个版本的代码应该能正常运行并达到你期望的效果。
捕获11.PNG

最佳答案

查看完整内容

你的代码的问题在于对二维列表的初始化。这里,你是这样初始化的: 这将导致所有行引用的是相同的列表,也就是说,所有行都是同一个列表的引用,因此修改任何一行都会影响其他所有行。你可以想象这个列表就像88个镜像,修改任何一个镜像都会反映在其他所有镜像中。 因此,你应该这样初始化二维列表: 这将创建一个真正的二维列表,其中每一行都是独立的列表。你修改一行时,不会影响其他行。 所以,你的代码应 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-7 23:09:12 | 显示全部楼层    本楼为最佳答案   
你的代码的问题在于对二维列表的初始化。这里,你是这样初始化的:

  1. my_matrix=[[0]*88]*88
复制代码


这将导致所有行引用的是相同的列表,也就是说,所有行都是同一个列表的引用,因此修改任何一行都会影响其他所有行。你可以想象这个列表就像88个镜像,修改任何一个镜像都会反映在其他所有镜像中。

因此,你应该这样初始化二维列表:

  1. my_matrix = [[0 for _ in range(88)] for _ in range(88)]
复制代码


这将创建一个真正的二维列表,其中每一行都是独立的列表。你修改一行时,不会影响其他行。

所以,你的代码应该修改为:

  1. import random

  2. my_matrix = [[0 for _ in range(88)] for _ in range(88)]
  3. for i in range(0,88):
  4.     for j in range(0,88):
  5.         my_matrix[i][j] = random.randint(0,1024)

  6. x = int(input("请输入一个待匹配的整数:"))

  7. for i in range(0,88):
  8.     for j in range(0,88):
  9.         if my_matrix[i][j] == x:
  10.             print(i, j, sep=" ", end="")
  11.             print()
复制代码


这个版本的代码应该能正常运行并达到你期望的效果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-7 23:17:09 | 显示全部楼层
1鱼币的话还不如不答……没鱼币就不要发悬赏啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-8 09:40:06 | 显示全部楼层
歌者文明清理员 发表于 2023-6-7 23:17
1鱼币的话还不如不答……没鱼币就不要发悬赏啊

一个鱼币确实恶心,有点损人不利己了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-6-12 19:59:41 | 显示全部楼层
歌者文明清理员 发表于 2023-6-7 23:17
1鱼币的话还不如不答……没鱼币就不要发悬赏啊

哈哈,穷人一个,下次就不发悬赏了,就发发帖子,看大家心情
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-17 06:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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