글자와 색인을 필요로하고 십자말 풀이를 쓰는 프로그램을 작성 중입니다 (십자말 풀이가 아니라 십자말 풀이를 돕는 도구입니다).Crossword Solving Companion
두 가지 버전의 알고리즘을 작성했지만 올바르게 작동하지 않는 것 같습니다. 내가 시도한 첫 번째 시도는 다음과 같았습니다.
fin = open('words.txt')
def answer_finder():
global fin
possible_answers = []
length = int(raw_input("How long is the word?"))
letter_1 = raw_input("What is the first letter that you know?").lower
letter_1_index = int(raw_input("How many letters into the word is that letter?")) - 1
letter_2 = raw_input("What is the second letter that you know?").lower
letter_2_index = int(raw_input("How many letters into the word is that letter?")) - 1
letter_3 = raw_input("What is the third letter that you know?").lower
letter_3_index = int(raw_input("How many letters into the word is that letter?")) - 1
for i in fin:
if len(i) == length:
if i[letter_1_index] == letter_1 and i[letter_2_index] == letter_2 and i[letter_3_index] == letter_3:
possible_answers.append(i)
return possible_answers
나는 이것이 다소 추한 것을 알았지 만, 이것은 알고리즘의 개념 증명이었습니다. 사용자 입력은 나중에 변경됩니다. 어쨌든, 이건 내가 시도해도 상관없이 빈 목록을 반환하는 것 같습니다.
두 번째 버전은 기본적으로 동일했지만, 대신 부울 연산자의 중첩 된 IF 문에 의존 :
def answer_finder():
global fin
possible_answers = []
length = int(raw_input("How long is the word?"))
letter_1 = raw_input("What is the first letter that you know?").lower
letter_1_index = int(raw_input("How many letters into the word is that letter?")) - 1
letter_2 = raw_input("What is the second letter that you know?").lower
letter_2_index = int(raw_input("How many letters into the word is that letter?")) - 1
letter_3 = raw_input("What is the third letter that you know?").lower
letter_3_index = int(raw_input("How many letters into the word is that letter?")) - 1
for i in fin:
if len(i) == length:
if i[letter_1_index] == letter_1:
if i[letter_2_index] == letter_2:
if i[letter_3_index] == letter_3:
possible_answers.append(i)
return possible_answers
이 너무 빈 목록을 반환합니다. 내가 사용하는 단어 목록은 here입니다. 나는 외부 파일 작업에 익숙하지 않기 때문에 확실한 것을 놓치고 있다고 가정하고 있습니다.
def greater_than_20():
global fin
li = []
for i in fin:
if len(i) > 20:
li.append(i)
return li
def first_letter_length_finder():
global fin
length = int(raw_input("How long is the word?"))
first_letter = raw_input("What is the first letter?")
li = []
for i in fin:
if len(i) == length and i[0] == first_letter:
li.append(i)
print li
return li
편집 : 나는이 기능은 이전의 프로토 타입이 있으며, 모두 잘 작동한다는 점을 지적한다 (. 코드의 주석 처리 된 부분 포함) 그냥 참조를 위해, 여기에 전체의 코드가
을fin = open('words.txt')
print fin
def greater_than_20():
global fin
li = []
for i in fin:
if len(i) > 20:
li.append(i)
return li
def first_letter_length_finder():
global fin
length = int(raw_input("How long is the word?"))
first_letter = raw_input("What is the first letter?")
li = []
for i in fin:
if len(i) == length and i[0] == first_letter:
li.append(i)
print li
return li
def answer_finder():
global fin
possible_answers = []
length = int(raw_input("How long is the word?"))
letter_1 = raw_input("What is the first letter that you know?").lower
letter_1_index = int(raw_input("How many letters into the word is that letter?")) - 1
letter_2 = raw_input("What is the second letter that you know?").lower
letter_2_index = int(raw_input("How many letters into the word is that letter?")) - 1
letter_3 = raw_input("What is the third letter that you know?").lower
letter_3_index = int(raw_input("How many letters into the word is that letter?")) - 1
for i in fin:
if len(i) == length:
# if i[letter_1_index] == letter_1 and i[letter_2_index] == letter_2 and i[letter_3_index] == letter_3:
# possible_answers.append(i)
if i[letter_1_index] == letter_1:
if i[letter_2_index] == letter_2:
if i[letter_3_index] == letter_3:
possible_answers.append(i)
return possible_answers
단어 파일을 분할하거나 (심지어 읽는 것조차도) 보이지 않습니다 ... 게시하지 않은 코드에서이 작업이 완료 되었습니까? –
오, 아마도. 이 모든 함수는 같은 문서에 있으며, 맨 위에 'fin = open ('words.txt ')'가 있습니다. 각 함수에 '글로벌 지느러미'라고 부릅니다. 나는 여전히 파이썬을 통해 파일을 읽는 것이 매우 새롭다. 그렇게하지 않으면 파이썬을 알려줘. 지금까지 참조 용으로 전체 코드를 추가했습니다. – b4ux1t3