Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem số có phải là palindrome hay không ở dạng bát phân trong Python

Giả sử chúng ta có một số ở dạng bát phân hoặc dạng thập phân. Nếu nó ở dạng bát phân, hãy kiểm tra xem nó có phải là palindrome hay không. Nếu số ở dạng thập phân, hãy chuyển nó thành số bát phân rồi kiểm tra xem nó có phải là palindrome hay không.

Vì vậy, nếu đầu vào giống như num =178, thì đầu ra sẽ là True vì số không ở dạng bát phân (8 không phải là biểu tượng hợp lệ ở dạng bát phân nhưng hợp lệ ở dạng thập phân), sau đó chuyển đổi nó thành bát phân là 262 và đây là palindrome.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • base:=8 khi tất cả các chữ số của num nhỏ hơn 8, ngược lại là 10
  • oct_list:=một danh sách mới
  • trong khi num không phải là 0, hãy thực hiện
    • insert (num mod base) vào cuối oct_list
    • num:=thương số của (num / base)
  • j:=kích thước của oct_list - 1
  • k:=0
  • while k <=j, do
    • nếu oct_list [j] không giống với oct_list [k], thì
      • trả về Sai
    • j:=j - 1, k:=k + 1
  • trả về True

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

178

Đầu ra

True