문자열이 대칭인지 회문인지 확인해야 하는 경우 'while' 조건을 사용하는 메서드를 정의할 수 있습니다. 'while'과 'if' 조건도 사용하는 대칭성을 확인하는 또 다른 방법이 정의되어 있습니다.
회문은 숫자 또는 문자열이며 왼쪽에서 오른쪽으로 또는 오른쪽에서 왼쪽으로 읽을 때 동일한 값입니다. 인덱스 값은 동일합니다.
예
아래는 동일한 데모입니다 -
def check_palindrome(my_str): mid_val = (len(my_str)-1)//2 start = 0 end = len(my_str)-1 flag = 0 while(start<mid_val): if (my_str[start]== my_str[end]): start += 1 end -= 1 else: flag = 1 break; if flag == 0: print("The entered string is palindrome") else: print("The entered string is not palindrome") def check_symmetry(my_str): n = len(my_str) flag = 0 if n%2: mid_val = n//2 +1 else: mid_val = n//2 start_1 = 0 start_2 = mid_val while(start_1 < mid_val and start_2 < n): if (my_str[start_1]== my_str[start_2]): start_1 = start_1 + 1 start_2 = start_2 + 1 else: flag = 1 break if flag == 0: print("The entered string is symmetrical") else: print("The entered string is not symmetrical") my_string = 'phphhphp' print("The method to check a palindrome is being called...") check_palindrome(my_string) print("The method to check symmetry is being called...") check_symmetry(my_string)
출력
The method to check a palindrome is being called... The entered string is palindrome The method to check symmetry is being called... The entered string is not symmetrical
설명
- 문자열을 매개변수로 사용하는 'check_palindrome'이라는 메서드가 정의되어 있습니다.
- 가운데 값은 바닥을 2로 나누어 계산합니다.
- 시작 값은 0에 할당되고 끝 값은 마지막 요소에 할당됩니다.
- flag라는 변수는 0에 할당됩니다.
- while 조건이 시작되고 시작 및 끝 요소가 같으면 시작 값이 증가하고 끝 값이 감소합니다.
- 그렇지 않으면 플래그 변수가 1에 할당되고 루프에서 벗어납니다.
- 플래그의 값이 0이면 문자열은 회문이고, 그렇지 않으면 아닙니다.
- 문자열을 매개변수로 사용하는 'check_symmetry'라는 또 다른 메서드가 정의되어 있습니다.
- 문자열의 길이가 변수에 할당됩니다.
- 길이와 2의 나머지가 0이 아닌 경우 중간 값이 변경됩니다.
- 시작값과 중간값이 다시 변경됩니다.
- 또 다른 'while' 조건이 사용되며 시작 값이 다시 변경됩니다.
- 플래그 값이 0이면 문자열이 대칭으로 간주됩니다.
- 그렇지 않으면 그렇지 않습니다.