, 코드가 항상 True를 반환합니다.
for i in range(0, len(str1), 1):
이는 문자열이 "파이썬"루프 이러한 'I'의 값을 가질 것이다 STR1의 길이의 범위에서 반복한다 : 0, 1, 2, 3, 4, 5 인 경우를 당신은
for i in str1:
이 난의 값을 만들 것입니다 쓰기 모든 단일 문자를 반복 할 : 당신이 범위를 사용하는 경우 P, y는, T, H, O, N 또는
, 당신은 확인하실 수 있습니다 str1 [i]로 된 개별 문자. 다음과 같이 출력됩니다 : str1 [0] == "p", str1 [1] == "y"등
if 문에서 동일한 작업을하므로 범위에서 'i' (0, 6)은 i와 동일하다. 'i'의 첫 번째 값은 0이되고, 첫 번째 검사에서 if 문이 전달 된 후 이 반환됩니다.이 반환되면 루프가 종료됩니다. 즉,이 첫 번째 경우 만 확인합니다.
str1의 모든 문자를 확인하고, str2의 어느 위치에 있으면 str2에서 해당 인스턴스를 제거하고 다음 문자를 확인하십시오. 언제든지 문자가 str2에 없으면 False를 반환합니다. 모든 문자를 검사하고 False를 반환하지 않은 경우 True를 반환합니다.
문자열은 불변이므로 목록에 먼저 넣고 목록을 반복 할 수 있습니다. 다음 코드 밖으로
확인 :
이
def check_anagram(str1, str2):
if len(str1) != len(str2):
return False
else:
string1 = [x for x in str1] # put str1 in list string1
string2 = [x for x in str2]
for i in range(0, len(str2), 1): # iterate over the range (length) of str2
if string1[i] in string2: # if letter in position i of string1 occurs in string 2 then:
string2.remove(string1[i]) # remove that letter from the string2 list
else:
return False # if it does NOT occur in string2, it is NOT an anagram, so return false
return True # If the loop went correctly, return true
편집 : 당신이 (공백 (스페이스)를 제거하기 때문에하려면 "ARS 마그나는" "아나그램"의 철자 바꾸기는하지만, 프로그램이 선택되지 않습니다 길이가 다르기 때문에 그것을 올리십시오) 당신은 처음에 이것을해야합니다. 문자열에서 공백 문자를 대체하는 것은 .replace (대체 할 내용, 바꾸기) 함수로 수행 할 수 있습니다. check_anagram 함수의 시작 부분에이 권리를 장소 :
str1 = str1.replace(" ", "")
str2 = str2.replace(" ", "")
'리턴' '.join (분류 (STR1)) ==' '.join (분류 (STR2))'내 문제를 해결하기 – ryugie