Найти - Пользователи
Полная версия: Программа иногда зацикливается, не могу понять почему
Начало » Центр помощи » Программа иногда зацикливается, не могу понять почему
1
Ver1Sus
Привет, вот моя программа, которая проверяет есть ли в строчке и в столбце одинаковые символы(типа судоку):
from random import randint
num=input('Enter count of rows: ')
num=int(num)
D=[]
for n in range(0,num):
    d=[]
    for n in range(0,num):
            d.append(0)
    D.append(d)
    
L=[]
for k in range(0,len(D)):   
    l=[]
    for i in range(0,len(D)):
        l.append(D[i][k])
    L.append(l)
for i in range(0,len(D)):        
    for k in range(0,len(D)):    
        while D[i].count(D[i][k])>=2 or L[k].count(L[k][i])>=2 or D[i][k]==0:
            
            D[i][k]=randint(1,num)
            L[k][i]=D[i][k]
print('\n')
for n in D:
    print(n)
            
Когда запускаю, программа зацикливается и не работает, выдавая ошибку:
^CTraceback (most recent call last):
File “lal.py”, line 29, in <module>
D=randint(1,num)
File “/usr/lib/python2.7/random.py”, line 241, in randint
return self.randrange(a, b+1)
File “/usr/lib/python2.7/random.py”, line 215, in randrange
return int(istart + int(self.random()*width))
KeyboardInterrupt

Но иногда работает, помогите найти ошибку, а то я весь интеренет перерыл и ничего полезного не нашел.
Aris_P@
замените эту жесть)
D=[]
for n in range(0,num):
    d=[]
    for n in range(0,num):
            d.append(0)
    D.append(d)
    
L=[]
for k in range(0,len(D)):   
    l=[]
    for i in range(0,len(D)):
        l.append(D[i][k])
    L.append(l)
на
D=[[0 for i in xrange(num)] for j in xrange(num)]
L=[[0 for i in xrange(num)] for j in xrange(num)]
а зацикливается прога потому что вам не везет при генерации случайных чисел - например(возьмем num=3) пусть первая строка сгенерировалась такой - (2,3,1), а первые 2 члена второй строки сгенерировались - (3, 2, x). Тогда перебор всех значений оставшегося члена не остановится никогда.
Ver1Sus
Aris_P@
а зацикливается прога потому что вам не везет при генерации случайных чисел - например(возьмем num=3) пусть первая строка сгенерировалась такой - (2,3,1), а первые 2 члена второй строки сгенерировались - (3, 2, x).
Спасибо огромное, я вообще не додумался до этого, придется исправлять!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB