Целью программы является создание анаграммы с учетом 6 произвольно сгенерированных алфавитов. Синтаксис кажется правильным, но есть некоторая логическая ошибка, которую я не могу понять. Если вы выполняете программу, тогда она будет продолжать работать, & не будет останавливаться. Я не думаю, что это из-за любого бесконечного цикла, а скорее из-за его неспособности найти анаграмму, используя 6 сгенерированных букв. Может, я сделал тупая ошибка , но, пожалуйста, укажите его. Я выделил часть, где я думаю, что есть ошибка. Я буду рад, если бы вы могли мне помочь. Файл words.txt можно загрузить с http://thinkpython.com/code/words.txtПожалуйста, помогите мне с этим кодом python
import random
def game():
while True:
ch=[]
res=[]
print 'The 6 randomly generated alphabets are :'
for i in range(6):
ch.append(chr(random.randrange(97,123)))
print ch,'\n'
delimiter=''
z=delimiter.join(ch) #converted list to a string
word_list2=dict() #word_list2 is a dictionary containing randomly generated letters as keys
for c in z:
if c not in word_list2:
word_list2[c]=1
else:
word_list2[c]=word_list2[c]+1
fin=open('words.txt')
for c in range(130000):
words=fin.readline()
word=words.strip()
flag=1
if len(word)==6:
word_list1=dict() #word_list1 is a dict containing char present in word as keys
for c in word:
if c not in word_list1:
word_list1[c]=1
else:
word_list1[c]=word_list1[c]+1
***for c in word_list2:
if c not in word_list1:
flag=1
break
else:
if word_list1[c]==word_list2[c]: #comparing if characters in both dict have same no. i.e 'a' should occur 2 times in both etc
flag==0
else:
flag=1
break***
if flag==0:
res.append(word)
if not res:
print 'the list is empty'
print 'Selecting a new set of randomly generated characters\n'
else :
print res
break
game()
Я бы предложите вам найти минимальный пример того, где код «сбой», чтобы мы могли более четко рассмотреть его. Вы пытались удалять блоки кода стратегически или печатать трассировки каждые несколько строк? –
Поскольку у вас есть цикл while while, и вы сообщаете, что он не заканчивается, вам нужно взглянуть на программу по мере ее запуска. Один из способов сделать это - вручную отслеживать выполнение кода и пытаться выяснить его. Другой - вставить некоторые операторы печати в ключевые моменты, чтобы вы могли смотреть программу по мере ее выполнения. –
Это еще один вариант кода! Его работа отлично – DarkLord