2014-10-19 3 views
-2

Когда я пытаюсь запустить следующий код, вывод не выводится, и он продолжает работать до тех пор, пока я не нажму Ctrl + C. Там есть проблема в моем цикле while? Матрица - это нулевая матрица 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

какой линии вы думаете, должны производить вывод? Вы забыли заявление 'print'? – geoffspear

+0

И избегайте так много вложенных циклов. – badc0re

+0

Значение numNode равно 20? – mdurant

ответ

0

Если на каждой итерации, еще 1 вводится в Матрицу, то каждый раз при запуске через for i in range(numNode): петель, добавьте сумму Matrixso далеко на сосчитать. т. е. при первом запуске вы вставляете 1 и count-> count + 1; но в следующий раз вы вставляете другой 1, и если он не будет тем же самым индексом, что и раньше, count-> count + 2.

Это маловероятно, что вы когда-либо попали в счетчик == 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 
+0

Я изменил код, когда я добавлял 1 к матрице, я увеличил счет до 1. Однако, если я хочу добавить около 300 единиц в матрицу, количество всегда меньше. В основном я пытаюсь добавить точный число 1s в матрицу. Например, если k = 300, я хочу отобразить матрицу, которая имеет в ней 300 единиц в случайных строках и столбцах. – user3330378

Смежные вопросы