ansire 发表于 2023-6-7 23:09:11

代码出错求助

import random
my_matrix=[*88]*88
for i in range(0,88):
    for j in range(0,88):
      my_matrix=random.randint(0,1024)
x=int(input("请输入一个代匹配的整数:"))
for i in range(0,88):
    for j in range(0,88):
      if my_matrix==x:
            print(i,j,sep=" ",end="")
            print()


如图所示,我的代码为什么不对呢,问题在哪儿,求助。

isdkz 发表于 2023-6-7 23:09:12

你的代码的问题在于对二维列表的初始化。这里,你是这样初始化的:

my_matrix=[*88]*88


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

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

my_matrix = [ for _ in range(88)]


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

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

import random

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

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

for i in range(0,88):
    for j in range(0,88):
      if my_matrix == x:
            print(i, j, sep=" ", end="")
            print()


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

歌者文明清理员 发表于 2023-6-7 23:17:09

1鱼币的话还不如不答……没鱼币就不要发悬赏啊

isdkz 发表于 2023-6-8 09:40:06

歌者文明清理员 发表于 2023-6-7 23:17
1鱼币的话还不如不答……没鱼币就不要发悬赏啊

一个鱼币确实恶心,有点损人不利己了{:10_277:}

ansire 发表于 2023-6-12 19:59:41

歌者文明清理员 发表于 2023-6-7 23:17
1鱼币的话还不如不答……没鱼币就不要发悬赏啊

哈哈,穷人一个,下次就不发悬赏了,就发发帖子,看大家心情{:5_97:}
页: [1]
查看完整版本: 代码出错求助