문자열이 대칭인지 회문인지 확인해야 하는 경우 '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이면 문자열이 대칭으로 간주됩니다.
- 그렇지 않으면 그렇지 않습니다.