|
1鱼币
- import random
- my_matrix=[[0]*88]*88
- for i in range(0,88):
- for j in range(0,88):
- my_matrix[i][j]=random.randint(0,1024)
- x=int(input("请输入一个代匹配的整数:"))
- for i in range(0,88):
- for j in range(0,88):
- if my_matrix[i][j]==x:
- print(i,j,sep=" ",end="")
- print()
复制代码
如图所示,我的代码为什么不对呢,问题在哪儿,求助。
你的代码的问题在于对二维列表的初始化。这里,你是这样初始化的:
这将导致所有行引用的是相同的列表,也就是说,所有行都是同一个列表的引用,因此修改任何一行都会影响其他所有行。你可以想象这个列表就像88个镜像,修改任何一个镜像都会反映在其他所有镜像中。
因此,你应该这样初始化二维列表:
- my_matrix = [[0 for _ in range(88)] for _ in range(88)]
复制代码
这将创建一个真正的二维列表,其中每一行都是独立的列表。你修改一行时,不会影响其他行。
所以,你的代码应该修改为:
- import random
- my_matrix = [[0 for _ in range(88)] for _ in range(88)]
- for i in range(0,88):
- for j in range(0,88):
- my_matrix[i][j] = random.randint(0,1024)
- x = int(input("请输入一个待匹配的整数:"))
- for i in range(0,88):
- for j in range(0,88):
- if my_matrix[i][j] == x:
- print(i, j, sep=" ", end="")
- print()
复制代码
这个版本的代码应该能正常运行并达到你期望的效果。
|
-
最佳答案
查看完整内容
你的代码的问题在于对二维列表的初始化。这里,你是这样初始化的:
这将导致所有行引用的是相同的列表,也就是说,所有行都是同一个列表的引用,因此修改任何一行都会影响其他所有行。你可以想象这个列表就像88个镜像,修改任何一个镜像都会反映在其他所有镜像中。
因此,你应该这样初始化二维列表:
这将创建一个真正的二维列表,其中每一行都是独立的列表。你修改一行时,不会影响其他行。
所以,你的代码应 ...
|