เมื่อจำเป็นต้องตรวจสอบว่าสตริงมีความสมมาตรหรือเป็นพาลินโดรมหรือไม่ สามารถกำหนดเมธอดที่ใช้เงื่อนไข 'while' ได้ มีการกำหนดอีกวิธีหนึ่งเพื่อตรวจสอบสมมาตรที่ใช้เงื่อนไข "ในขณะที่" และ "ถ้า" ด้วย
palindrome คือตัวเลขหรือสตริง ซึ่งเมื่ออ่านจากซ้ายไปขวาหรือขวาไปซ้ายจะเป็นค่าเดียวกัน ค่าดัชนีจะเท่ากัน
ตัวอย่าง
ด้านล่างนี้เป็นการสาธิตสำหรับสิ่งเดียวกัน -
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 และค่าสิ้นสุดถูกกำหนดให้กับองค์ประกอบสุดท้าย
- ตัวแปรที่ชื่อแฟล็กถูกกำหนดให้เป็น 0
- ในขณะที่เงื่อนไขเริ่มต้น และหากองค์ประกอบเริ่มต้นและสิ้นสุดเท่ากัน ค่าเริ่มต้นจะเพิ่มขึ้น และค่าสิ้นสุดจะลดลง
- มิฉะนั้น ตัวแปรแฟล็กถูกกำหนดให้เป็น 1 และแยกออกจากลูป
- หากค่าของแฟล็กเป็น 0 สตริงจะเป็น palindrome ไม่เช่นนั้นจะไม่ใช่
- มีการกำหนดวิธีการอื่นที่ชื่อว่า 'check_symmetry' ซึ่งรับสตริงเป็นพารามิเตอร์
- ความยาวของสตริงถูกกำหนดให้กับตัวแปร
- หากความยาวที่เหลือและ 2 ไม่ใช่ 0 ค่ากลางจะเปลี่ยนไป
- ค่าเริ่มต้นและค่ากลางมีการเปลี่ยนแปลงอีกครั้ง
- ใช้เงื่อนไข 'while' อื่น และค่าเริ่มต้นจะเปลี่ยนไปอีกครั้ง
- หากค่าของแฟล็กเป็น 0 แสดงว่าสตริงนั้นสมมาตร
- มิฉะนั้นจะไม่