Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 Octal에서 숫자가 회문인지 확인하십시오.

<시간/>

8진수 또는 10진수 형식의 숫자가 있다고 가정합니다. 이것이 8진수 형태인 경우 회문인지 아닌지 확인하십시오. 10진수이면 8진수로 변환한 후 회문인지 확인하세요.

따라서 입력이 num =178과 같으면 숫자가 8진수 형식이 아니므로 출력은 True가 됩니다(8은 8진수로 유효한 기호가 아니지만 10진수로 유효함). 그런 다음 262인 8진수로 변환합니다. 회문.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • base :=num의 모든 숫자가 8보다 작으면 8, 그렇지 않으면 10
  • oct_list :=새 목록
  • num이 0이 아닌 동안 do
    • oct_list 끝에 (num mod base) 삽입
    • num :=(num / base)의 몫
  • j :=oct_list의 크기 - 1
  • k :=0
  • k <=j, do
    • oct_list[j]가 oct_list[k]와 같지 않으면
      • 거짓을 반환
    • j :=j - 1, k :=k + 1
  • 참 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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