2014-11-18 3 views
0

UPDATE기능 대답

def get_dictionary_word_list(): 
    with open('dictionarys.txt') as f: 
     return f.read().split() 

def partial_anagram(str1,str2): 
    str2_list = list(str2) 
    for char in str1: 
     if char in str2_list: 
      str2_list.remove(char) 
     else: 
      return False 
    return True 

def find_partial_anagrams_in_word_list(str1,strlist): 
    partial_anagrams = [] 
    for word in str_list: 
      if (partial_anagram(word, str1)): 
       partial_anagrams.append(word) 
      print(partial_anagrams) 

함수 find_partial_anagrams_in_word_list (str1과, str_list) 지금 따라 작동하지만 지속적으로 답변을 통해 루프하고 반환을 중지하지 않습니다에 걸쳐 반복 유지합니다. 한 번 돌려 주면 어떻게 될까요?

+0

당신은 정말로 anagram을 원하거나 코드로 무엇을하려고합니까? 내가 아나그램의 정의를 확인했기 때문에 똑같은 글자를 사용해야하므로 2 개의 아나그램은 같은 크기입니다. 코드를 사용하여 이것을 시도하지 마십시오. –

+0

부분적인 아나그램이 필요했습니다. 나는 이미 anagram 기능을 수행했다. – alfiej12

답변

1
def partial_anagram(str1,str2): 
    str2_list = list(str2) 
    for char in str1: 
     if char in str2_list: 
      str2_list.remove(char) 
     else: 
      return False 
     return True 

들여 쓰기 문제가있는 것 같습니다. for 루프가 else 블록을 두드리지 않고 실행을 완료하는 경우에만 return True을 사용해야합니다. 하나씩 들러 붙이지 마십시오.


def partial_anagram(str1,str2): 
    str2_list = list(str2) 
    for char in str1: 
     if char in str2_list: 
      str2_list.remove(char) 
     else: 
      return False 
    return True 

는 또한 최종 인쇄 들여 쓰기 해제해야합니다.

def find_partial_anagrams_in_word_list(str1,strlist): 
    partial_anagrams = [] 
    for word in str_list: 
      if (partial_anagram(word, str1)): 
       partial_anagrams.append(word) 
    print(partial_anagrams) 
+0

안녕하세요, partial_anagram (str1, str2,) 완벽하게 작동하며 문제가되지 않습니다. 문제는 내 질문의 마지막 기능입니다. 나는 파일에서 '브랜 돈'의 부분적인 anagram을 발견 할 필요가있다. 내 질문에 마지막 함수는이 일을하기로되어 있지만 @kevin – alfiej12

+0

_ 부분 수식 (str1, str2) 완전히 문제없이 작동합니다. 나는 그것이 사실이라고 생각하지 않는다. 원래 코드를 사용하면 'hzzzz'에 "e", "l"또는 "o"가 포함되지 않아도 partial_anagram ("hello", "hzzzz")'은 True를 반환합니다. 두 번째 기능을 사용하기 때문에 마지막 기능이 작동하지 않습니다. – Kevin

+0

타이핑 할 때 잘못 들여 쓰기가 가능할 수도 있지만 제대로 작동합니다. 그러나 마지막 함수와 함께 사용하면 응답을 반복적으로 반복합니다. – alfiej12

0
def get_dictionary_word_list(): 
    return open('dictionarys.txt').read().split() 


def partial_anagram(str_1, str_2): 
    return not any(str_1.count(char_1) > str_2.count(char_1) for char_1 in str_1) 


def find_partial_anagrams_in_word_list(str_1, str_list): 
    return [word for word in str_list if partial_anagram(word, str_1)] 
+0

partial_anagram (str1, str2)은 문제가 아닙니다. 텍스트 파일에서 문자열의 부분적인 anagram을 찾는 함수를 정의해야합니다. 내 질문에 마지막 함수는 내가 가지고 있지만 거기에있는 A 및 부분 anagrams 함께 아무것도 반환합니다. @ludovicviaud – alfiej12

+0

귀하의 기능에 문제가 있었고 사실 내 것이 었습니다. 여러 개의 동일한 문자를 처리하지는 않습니다. 편집 할 것입니다. –

1

이동 중이 줄 당신의 루프 :

def find_partial_anagrams_in_word_list(str1,strlist): 
    partial_anagrams = [] 
    for word in str_list: 
      if (partial_anagram(word, str1)): 
       partial_anagrams.append(word) 
      print(partial_anagrams) # THIS LINE... <<< 

그것은해야한다 :이 답변을 통해 무한히 루프를하지 않는 코드는

def find_partial_anagrams_in_word_list(str1,strlist): 
    partial_anagrams = [] 
    for word in str_list: 
      if (partial_anagram(word, str1)): 
       partial_anagrams.append(word) 

    print(partial_anagrams) # same level as the for loop 
0

및 텍스트 파일의 부분 해석을 반환합니다.

def find_partial_anagrams_in_word_list(str1,str_list): 
    partial_anagrams = [] 
    for word in str_list: 
     if (partial_anagram(word, str1)): 
      partial_anagrams.append(word) 
      print(word)