当我尝试运行以下代码时,没有显示输出并且它一直运行直到我按下Ctrl + C.我的while循环中有问题吗?Matrix是20x20零矩阵。
while 1:
y=random.sample(range(1,20),2)
g=random.sample(range(1,20),2)
for h in range(0,1):
t=y[h]
u=g[h]
if(t!=u):
Matrix[t][u]=1
for i in range(numNode):
for j in range(numNode):
if(Matrix[i][j]==1):
count=count+1
else:
t=y[h+1]
u=g[h+1]
Matrix[t][u]=1
for i in range(numNode):
for j in range(numNode):
if(Matrix[i][j]==1):
count=count+1
if(count==40):
break
print(count)
答案 0 :(得分:0)
如果在每次迭代中,另外1次输入矩阵,则每次运行for i in range(numNode):
循环时,都会将Matrixso的总和添加到计数中。即,第一次运行时,插入1,count-> count + 1;但是下次你插入另一个1时,如果它不是与之前相同的索引,则count-> count + 2.
你不可能完全击中count == 40。要么确保每次循环只增加1次计数,要么将条件更改为if(count>=40)
,具体取决于您实际要实现的目标。
使用numpy函数可能需要以下内容:
matrix = zeros((40,40))
xx,yy = meshgrid( arange(40), arange(40) )
ind1 = random.choice( arange(40*40), size=40, replace=False)
ind2 = random.choice( arange(40*40), size=40, replace=False)
xx.shape = (40*40,)
yy.shape = (40*40,)
matrix[xx[ind1],yy[ind2]] = 1