Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าตัวเลขเป็น palindrome หรือไม่ใน Octal ใน Python


สมมติว่าเรามีตัวเลขที่เป็นฐานแปดหรือทศนิยม หากอยู่ในรูปแบบฐานแปด ให้ตรวจสอบว่าเป็นพาลินโดรมหรือไม่ หากตัวเลขเป็นทศนิยมให้แปลงเป็นฐานแปดแล้วตรวจสอบว่าเป็นพาลินโดรมหรือไม่

ดังนั้น หากอินพุตเท่ากับ num =178 ผลลัพธ์จะเป็น True เนื่องจากตัวเลขไม่อยู่ในรูปแบบฐานแปด (8 ไม่ใช่สัญลักษณ์ที่ถูกต้องในฐานแปด แต่ใช้ได้เป็นฐานสิบ) จากนั้นแปลงเป็นฐานแปดซึ่งเท่ากับ 262 และนี่คือ พาลินโดรม.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ฐาน :=8 เมื่อตัวเลขทั้งหมดของ num ต่ำกว่า 8 มิฉะนั้น 10
  • oct_list :=รายการใหม่
  • ในขณะที่ num ไม่ใช่ 0, do
    • แทรก (ฐาน num mod) ที่ส่วนท้ายของ oct_list
    • num :=ผลหารของ (num / base)
  • j :=ขนาดของ oct_list - 1
  • k :=0
  • ในขณะที่ k <=j ทำ
    • ถ้า oct_list[j] ไม่เหมือนกับ oct_list[k] แล้ว
      • คืนค่าเท็จ
    • j :=j - 1, k :=k + 1
  • คืนค่า True

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def is_all_under_8(num):
   while num:
      if (num % 10) >= 8:
         return False
      else:
         num = int(num / 10)
      return True
def solve(num):
   base = 8 if(is_all_under_8(num) == False) else 10
   oct_list = []
   while num != 0:
      oct_list.append(num % base)
      num = int(num / base)
   j = len(oct_list)-1
   k = 0
   while k <= j:
      if oct_list[j] != oct_list[k]:
         return False
      j-=1
      k+=1
   return True
num = 178
print(solve(num))

อินพุต

178

ผลลัพธ์

True