내 프로그램이 문자열을 해독하고 가능한 모든 조합을 찾는 작은 프로젝트를 수행하고 있습니다.다른 목록의 목록에서 문자열 개체 찾기
두 개의 목록이 있습니다. comboList
및 wordList
. comboList
은 단어의 모든 조합을 보유합니다. 예를 들어, 'ABC'
에 대한 comboList
은 다음과 같습니다
['ABC','ACB','BAC','BCA','CAB','CBA']
wordList
텍스트 파일에서 가져온 약 56,000 단어를 보유 (만 'CAB'
진짜 단어입니다). 이것들은 모두 영어 사전에서 찾아 길이별로 정렬 된 다음 알파벳 순으로 정렬됩니다.
isRealWord(comboList,wordList)
은 comboList
에있는 어떤 단어가 wordList
에 있는지 확인하여 실제로 테스트하는 기능입니다.
run c:/Users/uzair/Documents/Programming/Python/unscramble.py
Please give a string of scrambled letters to unscramble: abc
['A', 'B', 'C']
['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']
Loading word list...
55909 words loaded
Debug 1
Debug 2
Debug 2
Debug 2
Debug 2
Debug 2
Debug 2
Debug 4
[]
왜 if combo in wordList
는 True
을 반환하지 않습니다이며 어떻게 해결합니까 :
def isRealWord(comboList, wordList):
print 'Debug 1'
for combo in comboList:
print 'Debug 2'
if combo in wordList:
print 'Debug 3'
print combo
listOfActualWords.append(combo)
print 'Debug 4'
이 출력은 : 여기 코드는?
단어 목록도 모두 대문자입니까? – L3viathan
isRealWord 메서드 내에서 디버그 2 행을 >> print "{0} : {1}"형식으로 바꿀 수 있으며 비교 대상을 정확히 볼 수 있습니다. - 괜찮은 디버깅 - wordList는 단어 톤입니다. ..하지만 귀하의 콤보를 인쇄하여 정확히 무엇을 확인하는지보십시오! – AK47
사이드 노트 :'set'을 사용하여'wordList'를 유지하는 것이 훨씬 빠릅니다! 'wordList'가 코드를 포함하고있는'list' 일 필요가있을 때마다 매번 isRealWord 안에'set'을 만들 가치가 있습니다. – MisterMiyagi