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
广告