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
  • 返回 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

更新于:2021年1月19日

476 次浏览

开启您的职业生涯

通过完成课程获得认证

开始
广告