Python中判斷八進位制數是否為迴文數
假設我們有一個數字,它可能是八進位制或十進位制形式。如果是八進位制形式,則檢查它是否為迴文數。如果是十進位制數,則將其轉換為八進位制,然後檢查它是否為迴文數。
因此,如果輸入類似於 num = 178,則輸出將為 True,因為該數字不是八進位制形式(8 在八進位制中不是有效符號,但在十進位制中有效),然後將其轉換為八進位制,結果為 262,這是一個迴文數。
為了解決這個問題,我們將遵循以下步驟:
- 如果num的所有數字都小於8,則base := 8,否則base := 10
- oct_list := 一個新的列表
- 當num不為0時,執行:
- 將 (num mod base) 插入oct_list的末尾
- num := (num / base) 的商
- j := oct_list的大小 - 1
- k := 0
- 當 k <= j 時,執行:
- 如果 oct_list[j] 與 oct_list[k] 不相同,則
- 返回 False
- j := j - 1, k := k + 1
- 如果 oct_list[j] 與 oct_list[k] 不相同,則
- 返回 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
廣告