程序在执行时挂起

时间:2014-10-19 14:07:14

标签: python

当我尝试运行以下代码时,没有显示输出并且它一直运行直到我按下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)

1 个答案:

答案 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